Deficiencies in the Elliptic Curve Subsystem of the MAGMA Computer Algebra System

William A. Stein  Mark Watkins

April 13, 2001

1. Computing a_{p} for lots of p takes way too long.

> E := EllipticCurve([0,0,1,-7,6]);
> Conductor(E);
// 5077
> time P := [p : p in [2..50000] |IsPrime(p)];
Time: 0.209
> time aplist := [Trace(E,GF(p)) : p in P];
Time: 231.740    // HORRIBLE!!!
> time K := [GF(p) : p in [2..50000] |IsPrime(p)];
Time: 2.549
>  time Elist := [BaseExtend(E,GF(p)) :
         p in [2..50000] |IsPrime(p) and p ne 5077];
Time: 22.719

However, PARI is vastly faster at this computation:

? E = ellinit([0,0,1,-7,6]);
? P=[];forprime(p=3,50000,P=concat(P,[p]));
? gettime
%9 = 5960
? aplist=[];forprime(p=3,50000,aplist=concat(aplist,[ellap(E,p)]));
? gettime
%10 = 7190

To summarize, PARI takes only 1.2 seconds to do what takes MAGMA 231 seconds.

2. MAGMA has no function for computing L(E, 1), the sign of the functional equation of L(E, s) or the root numbers, whereas PARI has excellent implementations of algorithms for doing this. There is nothing for computing L^{(r)}(E, 1) or _{s=1}L(E, s). PARI also does not have such commands.

3. The default bounds used in the command MordellWeilGroup appear to be out of date. Perhaps MAGMA uses Silverman’s bounds for the difference between the canonical and naive heights. These are much larger than one should really use. Siksek has discovered better bounds, and implemented them in apecs. Also, what does the parameter “Bound” to the elliptic curve functions do.

4. The second author has an excellent analytic method to compute the modular degree, assuming that one can compute traces a_{p} quickly.

5. MAGMA does not have an allisog command, which would return all elliptic curves isogenous to a given elliptic curve.