SAGE includes John Cremona's tables of elliptic curves in an easy-to-use format. The unique instance of the class CremonaDatabase() gives access to the database.
If the full CremonaDatabase isn't installed, a mini-version, which is included by default with SAGE, is included. It includes Weierstrass equations, rank, and torsion for curves up to conductor 10000.
The database includes all curves of conductor up to 80000 (and growing). It also includes data related to the BSD conjecture and modular degrees for all of these curves, and generators for the Mordell-Weil groups.
The module tables.cremona defines the following classes:
sage: c = CremonaDatabase() sage: c Cremona's database of elliptic curves sage: c.allcurves(11) {'A1': [[0, -1, 1, -10, -20], 0, 5], 'A3': [[0, -1, 1, 0, 0], 0, 5], 'A2': [[0, -1, 1, -7820, -263580], 0, 1]}
The module tables.cremona defines the following methods:
) |
n) |
Returns the Cremona letter code corresponding to an integer. For example, 1 -> A 26 -> Z 27 -> AA 52 -> ZZ 53 -> AAA etc.
INPUT: n -- int OUTPUT: str
sage: cremona_letter_code(1) 'A' sage: cremona_letter_code(26) 'Z' sage: cremona_letter_code(27) 'AA' sage: cremona_letter_code(521) 'AAAAAAAAAAAAAAAAAAAAA' sage: cremona_letter_code(53) 'AAA' sage: cremona_letter_code(2005) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCC'
id) |
Returns true if the Cremona id refers to an optimal curve, and false otherwise. The curve is optimal if the id, which is of the form [letter code][number] has number 1.
NOTE: 990H3 is the optimal curve in that class, so doesn't obey this rule.
INPUT: id -- str of form letter code followed by an integer, e.g., A3, BB5, etc. OUTPUT: bool
sage: is_optimal_id('A2') False sage: is_optimal_id('B1') True sage: is_optimal_id('CC1') True sage: is_optimal_id('CC2') False
label) |
Given a Cremona label corresponding that defines an elliptic curve, e.g., 11A1 or 37B3, parse the label and return the conductor, isogeny class label, and number.
The isogeny number may be omitted, in which case it default to 1. If the isogeny number and letter are both omitted, so label is just a string representing a conductor, then the label defaults to 'A' and the number to 1.
INPUT: label -- str OUTPUT: int -- the conductor str -- the isogeny class label int -- the number
sage: parse_cremona_label('37A2') (37, 'A', 2) sage: parse_cremona_label('37B1') (37, 'B', 1) sage: parse_cremona_label('10AA2') (10, 'AA', 2)
ftpdata_tgz, largest_conductor, [decompress=True]) |
Rebuild the LargeCremonaDatabase from scratch using the ftpdata_tgz tarball.