Pari/GP scripts
Last updated on 2007-02-21
- Scripts for general elliptic curve related functions.
(1) there are dependencies between some of the following files!
(2) Tested under version 2.4.1 of pari/gp
(3) Fuller documentation and examples are contained in each file
- ell_utils.gp General utilities:
- ellneg(e,p) // negation of a point
- e.ai // extract [a1,a2,a3,a4,a6]
- ellinvert(urst) // invert a change of variables
- ellcompose(urst1,urst2) // compose two changes of variables
- polratroots(pol) // roots of a polynomial
- elliso(e1,e2) // Isomorphism test (char not 2,3)
- compsq(e) // complete the square to make e1=e3=0
- ellcomb(E,pts,v) // form sum v[i]*pts[i] on E
- ellbadprimes(e) // list of bad primes (over Q)
- ellpointsfromx(e,xi,flag=0) // list of points from list of
x-coords
- ell2torsion(e) // list of 2-torsion points
- ell3torsion(e) // list of 3-torsion points
- ell_models.gp: Integral and minimal
models (local and global, over Q)
- ellisintegral(e)
- ellislocallyintegral(e,p)
- elllocalintegralmodel(e,p)
- ellintegralmodel(e)
- ellvalidc4c6(c4,c6)
- ellislocallyminimal(e,p)
- ellisminimal(e)
- ellinitfromc4c6(c4,c6)
- ellminimisec4c6(c4,c6)
- ellminimalmodel2(e) // like ellminimalmodel(e) but not using Tate
- ell_divpol.gp: Division polynomials
- elldivpol(e,n) // n'th division polynomial of e
- elltorsionpoints(e,m) // all m-torsion points of e using division poly
- ell_baby.gp: Baby-step-giant-step with
applications to elliptic discrete log and point order
- hasse_bounds(q) // Hasse bounds for curves over F_q
- order_point_from_fact(e,P,fact) // order of P given factorization
of a multiple of the order
- order_point_from_mult(e,P, m) // order of P given a multiple of the order
- order_point_from_bounds(e,P, lower, upper) // order of P given
Hasse bounds on group order (over finite fields)
- order_point(e,P) // order of P over a finite field
- bg_algorithm(e, PP, QQ, lower, upper, info) // Discrete log,
solving i*P=Q with lower≤i≤upper
- ell_ff.gp: Function field functions,
including construction of a functions with certain divisors
(e.g. m(T)-m(O) where T has order m) and division of points (given a
point q and an integer m returns all points p such that m*p=q)
- ellffeqn(e) // the affine eqation of e (in global variables ellffV,ellffU)
- ellffgenpt(e) // generic point on e
- ellffeval(h,p) // value of rational function h at p (if not a pole)
- ellffeval2(h,p1,p2) // value of rational function h at divisor (p1)-(p2)
- ellffvert(e,t) // function with divisor (t)+(-t)-2(0)
- ellfftang(e,t) // function with divisor 2(t)+(-2t)-3(0)
- ellffchord(e,t) // function with divisor (t)+(s)+(-s-t)-3(0)
- ellffaddpol(e,t,s) // function with divisor (t)+(s)-(s+t)-(0)
- ellffmultpol(e,t,m) // function with divisor m(t)-(m*t)-(m-1)(0)
- ellffweilpol(e,t,m) // function whose divisor is m(t)-m(0),
assuming m*t=0 and m>0
- elldivpoint(e,q,m) // returns a list of points p such that m*p=q
- ell_weil.gp: Functions for computing
Weil Pairing and related things -- mostly over an arbitrary ground
field k, but at present we need to be able to generate random
points on the curves which is only implemented for k=Z/pZ
- ellffweilpairing(e,s,t,m) // provided m*t=m*s=0,
returns e_m(s,t) = Weil Pairing of s,t, an m'th root of unity
- ell_zp.gp: Functions for elliptic curves
over the finite field Z/pZ, including group structure and generators
- ellzprandompoint(ep) // a random point on ep (defined over Z/pZ)
- ellreducepoint(P,p) // reduction of P mod p
- ellzpinit(ai,p) // enhancement of ellinit for curves over Z/pZ,
returning group order and structure and generators in fields 14-17
- ellzp.grouporder // utilities for the above...
- ellzp.factoredgrouporder
- ellzp.groupstr
- ellzp.iscyclic
- ellzp.isotype
- ellzp.generators
- ellzppointorder(ellzp,t) // Order of a point (using the factored group order)
- Scripts for analytic rank and Heegner point computation
- bgc.gp: functions for computing L-series
derivatives and analytic ranks for elliptic curves over Q
- lambda.gp: utility functions used in
implementing the "Silverman-Cremona trick" for computing Heegner
points on (rank 1) elliptic curves over Q
- forms.gp: quadratic form utility functions
used in computing Heegner points on (rank 1) elliptic curves over Q
- heegner.gp: functions to compute
Heegner points on (rank 1) elliptic curves over Q.
This file includes the preceding three files.
Sample use: H_auto([0,0,1,-1,0]); finds the point [0,0] on
the first rank 1 curve.
H_auto([1,1,0,-3233812,-2240095280],1) find the point
[6895338740919600657/1732529155042921,
15647805808301267927173594042/72114206222122984153781] of height
43.6 on curve 20382A1