Elliptic Curves

(PARI-GP version 2.15.2)

An elliptic curve is initially given by 5-tuple v = [a_{1}, a_{2}, a_{3}, a_{4}, a_{6}] attached to Weierstrass model or simply [a_{4}, a_{6}]. It must be converted to an ell struct. Initialize ell struct over domain D E = ellinit(v, {D = 1})

over Q D = 1 over F_{p} D = p over F_{q}, q = p^{f} D = ffgen([p, f]) over Q_{p}, precision n D = O(p^{n}) over C, current bitprecision D = 1.0 over number field K D = nf

Points are [x,y], the origin is [0]. Struct members accessed as E.member:

• All domains: E.a1,a2,a3,a4,a6, b2,b4,b6,b8, c4,c6, disc, j

• E defined over R or C x-coords. of points of order 2 E.roots periods / quasi-periods E.omega,E.eta volume of complex lattice E.area

• E defined over Q_{p} residual characteristic E.p If |j|_{p} > 1: Tate’s [u^{2}, u, q, [a, b], L] E.tate

• E defined over F_{q} characteristic E.p #E(F_{q})/cyclic structure/generators E.no, E.cyc, E.gen

• E defined over Q generators of E(Q) (require elldata) E.gen

[a_{1}, a_{2}, a_{3}, a_{4}, a_{6}] from j-invariant ellfromj(j) cubic/quartic/biquadratic to Weierstrass ellfromeqn(eq) add points P + Q / P − Q elladd(E, P, Q), ellsub negate point ellneg(E, P) compute n · P ellmul(E, P, n) sum of Galois conjugates of P elltrace(E, P) check if P is on E ellisoncurve(E, P) order of torsion point P ellorder(E, P) y-coordinates of point(s) for x ellordinate(E, x) [℘(z), ℘′(z)] ∈ E(C) attached to z ∈ C ellztopoint(E, z) z ∈ C such that P = [℘(z), ℘′(z)] ellpointtoz(E, P) z ∈ Q̄^{∗}/qZ to P ∈ E(Q̄_{p}) ellztopoint(E, z)

P ∈ E(Q̄_{p}) to z ∈ Q̄^{∗}/qZ ellpointtoz(E, P) Change of Weierstrass models, using v = [u, r, s, t] change curve E using v ellchangecurve(E, v) change point P using v ellchangepoint(P, v) change point P using inverse of v ellchangepointinv(P, v) Twists and isogenies quadratic twist elltwist(E, d) n-division polynomial f_{n}(x) elldivpol(E, n, {x}) [n]P = (ϕ_{n}ψ_{n}: ω_{n}: ψ_{n}^{3}); return (ϕ_{n}, ψ_{n}^{2}) ellxn(E, n, {x}) isogeny from E to E/G ellisogeny(E, G) apply isogeny to g (point or isogeny) ellisogenyapply(f, g) torsion subgroup with generators elltors(E) Formal group formal exponential, n terms ellformalexp(E, {n}, {x}) formal logarithm, n terms ellformallog(E, {n}, {x}) log_{E}(−x(P)/y(P)) ∈ Q_{p}; P ∈ E(Q_{p}) ellpadiclog(E, p, n, P) P in the formal group ellformalpoint(E, {n}, {x}) [ω/dt, xω/dt] ellformaldifferential(E, {n}, {x}) w = −1/y in parameter −x/y ellformalw(E, {n}, {x})

Curves over finite fields, Pairings

random point on E random(E) #E(F_{q}) ellcard(E) #E(F_{q}) with almost prime order ellsea(E, {tors}) structure Z/d_{1}Z × Z/d_{2}Z of E(F_{q}) ellgroup(E) is E supersingular? ellissupersingular(E) Weil pairing of m-torsion pts P, Q ellweilpairing(E, P, Q, m) Tate pairing of P, Q; P m-torsion elltatepairing(E, P, Q, m) Discrete log, find n s.t. P = [n]Q elllog(E, P, Q, {ord})

Curves over Q

Reduction, minimal model minimal model of E/Q ellminimalmodel(E, {&v}) quadratic twist of minimal conductor ellminimaltwist(E) [k]P with good reduction ellnonsingularmultiple(E, P) E supersingular at p? ellissupersingular(E, p) affine points of naïve height ≤ h ellratpoints(E, h) Complex heights canonical height of P ellheight(E, P) canonical bilinear form taken at P, Q ellheight(E, P, Q) height regulator matrix for pts in L ellheightmatrix(E, L) p-adic heights cyclotomic p-adic height of P ∈ E(Q) ellpadicheight(E, p, n, P) … bilinear form at P, Q ∈ E(Q) ellpadicheight(E, p, n, P, Q) … matrix at vector for pts in L ellpadicheightmatrix(E, p, n, L) … regulator for canonical height ellpadicregulator(E, p, n, Q) Frobenius on Q_{p} ⊗ H_{dR}^{1}(E/Q) ellpadicfrobenius(E, p, n) slope of unit eigenvector of Frobenius ellpadics2(E, p, n) Isogenous curves matrix of isogeny degrees for Q-isog. curves ellisomat(E) tree of prime degree isogenies ellisotree(E) a modular equation of prime degree N ellmodulareqn(N) L-function p-th coeff a_{p} of L-function, p prime ellap(E, p) k-th coeff a_{k} of L-function ellak(E, k) L(E, s) (using less memory than lfun) elllseries(E, s) L^{(r)}(E, 1) (using less memory than lfun) ellL1(E, r) a Heegner point on E of rank 1 ellheegner(E) order of vanishing at 1 ellanalyticrank(E, {eps}) root number for L(E, .) at p ellrootno(E, {p}) modular parametrization of E elltaniyama(E) degree of modular parametrization ellmoddegree(E) compare with H^{1}(X_{0}(N), Z) (for E′ → E) ellweilcurve(E)

p-adic L function L_{p}^{(r)}(E, d, χ^{s}) ellpadicL(E, p, n, {s}, {r}, {d})

BSD conjecture for L_{p}^{(r)}(E_{D}, χ^{0}) ellpadicbsd(E, p, n, {D = 1}) Iwasawa invariants for L_{p}(E_{D}, τ^{i}) ellpadiclambdamu(E, p, D, i) Rational points attempt to compute E(Q) ellrank(E, {effort}, {points}) initialize for later ellrank calls, ellrankinit(E) saturate ⟨P_{1}, …, P_{n}⟩ wrt. primes ≤ B ellsaturation(E, P, B) 2-covers of the curve E ell2cover(E) Elldata package, Cremona’s database: db code "11a1" ↔ [conductor, class, index] ellconvertname(s) generators of Mordell-Weil group ellgenerators(E) look up E in database ellidentify(E) all curves matching criterion ellsearch(N) loop over curves with cond. from a to b forell(E, a, b, seq)

Curves over number field K

coeff a𝔭 of L-function ellap(E, 𝔭)

Kodaira type of 𝔭-fiber of E elllocalred(E, 𝔭) integral model of E/K ellintegralmodel(E, {&v}) minimal model of E/K ellminimalmodel(E, {&v}) minimal discriminant of E/K ellminimaldisc(E) cond, min mod, Tamagawa num [N, v, c] ellglobalred(E) global Tamagawa number elltamagawa(E) P ∈ E(K) n-divisible? [n]Q = P ellisdivisible(E, P, n, {&Q}) L-function A domain D = [c, w, h] in initialization mean we restrict s ∈ C to domain |ℜ(s) − c| < w, |ℑ(s)| < h; D = [w, h] encodes [1/2, w, h] and [h] encodes D = [1/2, 0, h] (critical line up to height h). vector of first n a_{k}’s in L-function ellan(E, n) init L^{(k)}(E, s) for k ≤ n L = lfuninit(E, D, {n = 0}) compute L(E, s) (n-th derivative) lfun(L, s, {n = 0}) L(E, 1, r)/(r! · R · #Sha) assuming BSD ellbsd(E)

Other curves of small genus

A hyperelliptic curve C is given by a pair [P, Q] (y^{2} + Qy = P with Q^{2} + 4P squarefree) or a single squarefree polynomial P (y^{2} = P). check if [x, y] is on C hyperellisoncurve(C, [x, y]) discriminant of C hyperelldisc(C) Cremona-Stoll reduction hyperellred(C) apply m = [e, [a, b; c, d], H] to model hyperellchangecurve(C, m) minimal discriminant of integral C hyperellminimaldisc(C) minimal model of integral C hyperellminimalmodel(C) reduction of y^{2} + Qy = P (genus 2) genus2red(C, {p}) affine rational points of height ≤ h hyperellratpoints(C, h) find a rational point on a conic, ^{t}xGx = 0 qfsolve(G) [H, U] such that H = cU^{t}GU has minimat det qfminimize(G) quadratic Hilbert symbol (at p) hilbert(x, y, {p}) all solutions in Q^{3} of ternary form qfparam(G, x) P, Q ∈ F_{q}[X]; char. poly. of Frobenius hyperellcharpoly(Q) matrix of Frobenius on Q_{p} ⊗ H_{dR}^{1} hyperellpadicfrobenius

Elliptic & Modular Functions

w = [ω_{1}, ω_{2}] or ell struct (E.omega), τ = ω_{1}/ω_{2}.

arithmetic-geometric mean agm(x, y) elliptic j-function 1/q + 744 + ⋯ ellj(x) Weierstrass σ/℘/ζ function ellsigma(w, z), ellwp, ellzeta periods/quasi-periods ellperiods(E, {flag}), elleta(w) (2iπ/ω_{2})^{k}E_{k}(τ) elleisnum(w, k, {flag}) modified Dedekind η func. ∏(1 − q^{n}) eta(x, {flag}) Dedekind sum s(h, k) sumdedekind(h, k) Jacobi sine theta function theta(q, z) k-th derivative at z=0 of theta(q, z) thetanullk(q, k) Weber’s f functions weber(x, {flag}) modular pol. of level N polmodular(N, {inv = j }) Hilbert class polynomial for Q(\sqrt{D}) polclass(D, \{inv = j \})

Based on an earlier version by Joseph H. Silverman November 2022 v2.38. Copyright \begin{matrix}c \\ ◯ \end{matrix} 2022 K. Belabas Permission is granted to make and distribute copies of this card provided the copyright and this permission notice are preserved on all copies. Send comments and corrections to ⟨Karim.Belabas@math.u-bordeaux.fr⟩