Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
241697 views
/*** EXAMPLE: Birch-Swinnerton-Dyer for an elliptic curve over Q  ***/
/*** v1.2, July 2013, questions to [email protected]   ***/
/***                                                              ***/
/*** type \rex-bsw or read("ex-bsw") at pari prompt to run this   ***/

elleq  = [0,0,1,-7,6];            \\ L-function of this elliptic curve over Q
points = [[1,-1],[2,-1],[0,-3]];  \\ basis of Mordell-Weil modulo torsion
                                  \\ May change this to any other E/Q

read("computel");                 \\ read the ComputeL package
                                  \\ and set the default values
default(realprecision,20);        \\ set working precision; used throughout

ellorig = ellinit(elleq);
gred    = ellglobalred(ellorig);
ell     = ellchangecurve(ellorig,gred[2]);    \\ global minimal model

                            \\ initialize L-function parameters
conductor = gred[1];        \\ conductor for the exponential factor
gammaV    = [0,1];          \\ list of gamma-factors
weight    = 2;              \\ L(s)=sgn*L(weight-s)
sgn       = ellrootno(ell); \\ sign in the functional equation
a(k)      = ellak(ell,k);   \\ L-series coefficients a(k)

initLdata("a(k)",1);  \\ initialize the vector of coefficients
                      \\ we won't call checkfeq(cutoff) or L(s,cutoff)
                      \\ so set cutoff=1, saves some coefficients

print("EXAMPLE: Birch-Swinnerton-Dyer on an elliptic curve over Q");
print("         with ",default(realprecision)," digits precision");
print("Elliptic curve : ", elleq);
print("Points         : ", points);
print("Conductor      = ", conductor);
print("Root number    = ", sgn);
print("Mord.-Weil rnk = ", rnk  = length(points));
print("Lead.term L(1) = ", lval = L(1,,rnk)/rnk!); \\ leading (order rnk)
                                                   \\ term of L(s) at s=1
print("Real period    = ", om   = ell.omega[1]*((ell.disc>0)+1));
print("Regulator      = ", reg  = matdet(ellheightmatrix(ellorig,points)));
print("Product(c_p)   = ", cp   = ellglobalred(ell)[3]);
print("Torsion size   = ", tors = elltors(ell)[1]);
print("Analytic #Sha  = ", sha  = lval/om/reg/cp*tors^2);
print("               = ", round(sha),", error=",errprint(sha-round(sha)));