|
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
Magma includes John Cremona's database of all elliptic curves over
Q of small conductor (up to 130 000 at V2.13 and above).
This section defines the interface to that database.
For each conductor in the range stored in the database the curves with that
conductor are stored in a number of isogeny classes. Each curve in an
isogeny class is isogenous (but not isomorphic) to the other curves in that
class. Isogeny classes are referred to by number rather than the alphabetic
form given in the Cremona tables.
All of the stored curves are global minimal models.
CremonaDatabase(: parameters) : -> DB
BufferSize: RngIntElt Default: 10000
This function returns a database object which contains information about
the elliptic curve database and is used in the functions which access it.
The optional parameter BufferSize controls the size of an internal
buffer --- see the description of SetBufferSize for more information.
The elliptic curve database D uses an internal buffer to cache disk reads;
if the buffer is large enough then the entire file can be cached and will
not need to be read from the disk more than once. On the other hand, if
only a few curves will be accessed then a large buffer is not especially
useful.
SetBufferSize can be used to set the size n (in bytes) of this buffer.
There are well defined useful minimum and maximum sizes for this buffer,
and values outside this range will be treated as the nearest useful value.
Returns the largest conductor of any elliptic curve stored in the database.
It is an error to attempt to refer to larger conductors in the database.
Returns the smallest and largest conductors stored in the database. It
is an error to attempt to refer to conductors outside of this range.
NumberOfCurves(D) : DB -> RngIntElt
Returns the number of elliptic curves stored in the database.
Returns the number of elliptic curves stored in the database for
conductor N.
Returns the number of elliptic curves stored in the database in
the i-th isogeny class for conductor N.
Returns the number of isogeny classes stored in the database for
conductor N.
EllipticCurve(D, N, S, J): DB, RngIntElt, MonStgElt, RngIntElt -> CrvEll
Returns the J-th elliptic curve of the I-th isogeny class of
conductor N from the database. I may be specified either as an
integer (first form) or as a label like "A" (second form).
EllipticCurve(S): MonStgElt -> CrvEll
Returns a representative elliptic curve with label S
(e.g., "101a" or "101a1") from the specified database
(or if not specified, from the Cremona database).
Returns a random curve from the database.
CremonaReference(E) : CrvEll -> MonStgElt
Returns the database reference to the minimal model for E
(e.g., "101a1"). E must be defined over Q and its conductor
must lie within the range of the database. The second form of this
function must open the database for each call, so if it is being used
many times the database should be created once and the first form used
instead.
> D := CremonaDatabase();
> #D;
847550
> minC, maxC := ConductorRange(D);
> minC, maxC;
1 130000
> &+[ NumberOfCurves(D, C) : C in [ minC .. maxC ] ];
847550
These numbers agree (which is nice). The conductor in that range with the
most curves is 100800.
> S := [ NumberOfCurves(D, C) : C in [ minC .. maxC ] ];
> cond := maxval + minC - 1 where _,maxval := Max(S);
> cond;
100800
> NumberOfCurves(D, cond);
924
> NumberOfIsogenyClasses(D, cond);
418
The unique curve of conductor 5077 has rank 3.
> NumberOfCurves(D, 5077);
1
> E := EllipticCurve(D, 5077, 1, 1);
> E;
Elliptic Curve defined by y^2 + y = x^3 - 7*x + 6 over Rational Field
> CremonaReference(D, E);
5077a1
> Rank(E);
3
EllipticCurves(D, N, S) : DB, RngIntElt, MonStgElt -> [ CrvEll ]
Returns the sequence of elliptic curves in the I-th isogeny class
for conductor N from the database. I may be specified either as
an integer (first form) or as a label like "A" (second form).
The sequence of elliptic curves for conductor N from
the database.
The sequence of elliptic curves with label S from the database.
S may specify just a conductor (like "101"), or both a
conductor and an isogeny class (like "101A").
The sequence of elliptic curves stored in the database. Note: this
function is extremely slow due to the number of curves involved. Where
possible it would be much better to iterate through the database instead
(see example).
Here are two ways to iterate through the database:
> D := CremonaDatabase();
25508696848625044861003843159331265666415824
Time: 21.130
> sum := 0;
> time for E in D do sum +:= Discriminant(E); end for;
> sum;
25508696848625044861003843159331265666415824
Time: 20.060
Now we create a random curve and find the other curves in its isogeny class.
> E := Random(D);
> E;
Elliptic Curve defined by y^2 = x^3 - 225*x over Rational Field
> Conductor(E);
7200
> CremonaReference(E);
7200bg1
> EllipticCurves(D, "7200bg");
[
Elliptic Curve defined by y^2 = x^3 - 225*x over Rational Field,
Elliptic Curve defined by y^2 = x^3 - 2475*x - 47250 over Rational Field,
Elliptic Curve defined by y^2 = x^3 - 2475*x + 47250 over Rational Field,
Elliptic Curve defined by y^2 = x^3 + 900*x over Rational Field
]
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|