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 rank

  • tors – integer (default: 0); the desired torsion order (ignored if 0)

  • n – integer (default: 10); the maximum number of curves returned

  • labels – boolean (default: False); if True, 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)