Tables of elliptic curves of given rank¶
The default database of curves contains the following data:
Rank |
Number of curves |
Maximal conductor |
---|---|---|
0 |
30427 |
9999 |
1 |
31871 |
9999 |
2 |
2388 |
9999 |
3 |
836 |
119888 |
4 |
10 |
1175648 |
5 |
5 |
37396136 |
6 |
5 |
6663562874 |
7 |
5 |
896913586322 |
8 |
6 |
457532830151317 |
9 |
7 |
~9.612839e+21 |
10 |
6 |
~1.971057e+21 |
11 |
6 |
~1.803406e+24 |
12 |
1 |
~2.696017e+29 |
14 |
1 |
~3.627533e+37 |
15 |
1 |
~1.640078e+56 |
17 |
1 |
~2.750021e+56 |
19 |
1 |
~1.373776e+65 |
20 |
1 |
~7.381324e+73 |
21 |
1 |
~2.611208e+85 |
22 |
1 |
~2.272064e+79 |
23 |
1 |
~1.139647e+89 |
24 |
1 |
~3.257638e+95 |
28 |
1 |
~3.455601e+141 |
Note that lists for r>=4 are not exhaustive; there may well be curves of the given rank with conductor less than the listed maximal conductor, which are not included in the tables.
AUTHORS:
William Stein (2007-10-07): initial version
Simon Spicer (2014-10-24): Added examples of more high-rank curves
See also the functions cremona_curves()
and cremona_optimal_curves()
which enable easy looping through the Cremona elliptic curve database.
- class sage.schemes.elliptic_curves.ec_database.EllipticCurves[source]¶
Bases:
object
- rank(rank, tors=0, n=10, labels=False)[source]¶
Return a list of at most \(n\) curves with given rank and torsion order.
INPUT:
rank
– integer; the desired ranktors
– integer (default: 0); the desired torsion order (ignored if 0)n
– integer (default: 10); the maximum number of curves returnedlabels
– boolean (default:False
); ifTrue
, return Cremona labels instead of curves
OUTPUT: list at most \(n\) of elliptic curves of required rank
EXAMPLES:
sage: elliptic_curves.rank(n=5, rank=3, tors=2, labels=True) ['59450i1', '59450i2', '61376c1', '61376c2', '65481c1']
>>> from sage.all import * >>> elliptic_curves.rank(n=Integer(5), rank=Integer(3), tors=Integer(2), labels=True) ['59450i1', '59450i2', '61376c1', '61376c2', '65481c1']
elliptic_curves.rank(n=5, rank=3, tors=2, labels=True)
sage: elliptic_curves.rank(n=5, rank=0, tors=5, labels=True) ['11a1', '11a3', '38b1', '50b1', '50b2']
>>> from sage.all import * >>> elliptic_curves.rank(n=Integer(5), rank=Integer(0), tors=Integer(5), labels=True) ['11a1', '11a3', '38b1', '50b1', '50b2']
elliptic_curves.rank(n=5, rank=0, tors=5, labels=True)
>>> from sage.all import * >>> elliptic_curves.rank(n=Integer(5), rank=Integer(0), tors=Integer(5), labels=True) ['11a1', '11a3', '38b1', '50b1', '50b2']
elliptic_curves.rank(n=5, rank=0, tors=5, labels=True)
sage: elliptic_curves.rank(n=5, rank=1, tors=7, labels=True) ['574i1', '4730k1', '6378c1']
>>> from sage.all import * >>> elliptic_curves.rank(n=Integer(5), rank=Integer(1), tors=Integer(7), labels=True) ['574i1', '4730k1', '6378c1']
elliptic_curves.rank(n=5, rank=1, tors=7, labels=True)
>>> from sage.all import * >>> elliptic_curves.rank(n=Integer(5), rank=Integer(1), tors=Integer(7), labels=True) ['574i1', '4730k1', '6378c1']
elliptic_curves.rank(n=5, rank=1, tors=7, labels=True)
sage: e = elliptic_curves.rank(6)[0]; e.ainvs(), e.conductor() ((1, 1, 0, -2582, 48720), 5187563742) sage: e = elliptic_curves.rank(7)[0]; e.ainvs(), e.conductor() ((0, 0, 0, -10012, 346900), 382623908456) sage: e = elliptic_curves.rank(8)[0]; e.ainvs(), e.conductor() ((1, -1, 0, -106384, 13075804), 249649566346838)
>>> from sage.all import * >>> e = elliptic_curves.rank(Integer(6))[Integer(0)]; e.ainvs(), e.conductor() ((1, 1, 0, -2582, 48720), 5187563742) >>> e = elliptic_curves.rank(Integer(7))[Integer(0)]; e.ainvs(), e.conductor() ((0, 0, 0, -10012, 346900), 382623908456) >>> e = elliptic_curves.rank(Integer(8))[Integer(0)]; e.ainvs(), e.conductor() ((1, -1, 0, -106384, 13075804), 249649566346838)
e = elliptic_curves.rank(6)[0]; e.ainvs(), e.conductor() e = elliptic_curves.rank(7)[0]; e.ainvs(), e.conductor() e = elliptic_curves.rank(8)[0]; e.ainvs(), e.conductor()
>>> from sage.all import * >>> e = elliptic_curves.rank(Integer(6))[Integer(0)]; e.ainvs(), e.conductor() ((1, 1, 0, -2582, 48720), 5187563742) >>> e = elliptic_curves.rank(Integer(7))[Integer(0)]; e.ainvs(), e.conductor() ((0, 0, 0, -10012, 346900), 382623908456) >>> e = elliptic_curves.rank(Integer(8))[Integer(0)]; e.ainvs(), e.conductor() ((1, -1, 0, -106384, 13075804), 249649566346838)
e = elliptic_curves.rank(6)[0]; e.ainvs(), e.conductor() e = elliptic_curves.rank(7)[0]; e.ainvs(), e.conductor() e = elliptic_curves.rank(8)[0]; e.ainvs(), e.conductor()
For large conductors, the labels are not known:
sage: L = elliptic_curves.rank(6, n=3); L [Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 2582*x + 48720 over Rational Field, Elliptic Curve defined by y^2 + y = x^3 - 7077*x + 235516 over Rational Field, Elliptic Curve defined by y^2 + x*y = x^3 - x^2 - 2326*x + 43456 over Rational Field] sage: L[0].cremona_label() Traceback (most recent call last): ... LookupError: Cremona database does not contain entry for Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 2582*x + 48720 over Rational Field sage: elliptic_curves.rank(6, n=3, labels=True) []
>>> from sage.all import * >>> L = elliptic_curves.rank(Integer(6), n=Integer(3)); L [Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 2582*x + 48720 over Rational Field, Elliptic Curve defined by y^2 + y = x^3 - 7077*x + 235516 over Rational Field, Elliptic Curve defined by y^2 + x*y = x^3 - x^2 - 2326*x + 43456 over Rational Field] >>> L[Integer(0)].cremona_label() Traceback (most recent call last): ... LookupError: Cremona database does not contain entry for Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 2582*x + 48720 over Rational Field >>> elliptic_curves.rank(Integer(6), n=Integer(3), labels=True) []
L = elliptic_curves.rank(6, n=3); L L[0].cremona_label() elliptic_curves.rank(6, n=3, labels=True)