Take the 2-minute tour ×

Is there a web site where one can look up a Weierstrass equation, by discriminant say, or coefficients of some readily derivable "standard" form, and find the rank of its solutions over Q neatly listed, along with a set of generators and torsion group?

After several web searches, the nearest I've come is the Cremona Tables. But they list by conductor, whatever that is, and there seems no obvious way for an amateur such as myself to translate the data on that site into a form usable for the above mentioned purpose.

Failing that, I'd be content with an eay to use Mathematica or Sage package to achieve this, with idiot-proof instructions.

Right now, I'm especially interested in the equation $ x^2 + x (x + 1)^2 = y^2 $, which obviously has some rational solutions, and I'm pretty sure has positive rank over Q.

But the answer for that specific equation, although useful at present, obviously won't help with others that may interest me in future - "Teach a Chinaman to fish" and all that ..

P.S. If the Cremona Tables can easily be used to look up equations such as the example above, I'd very much appreciate a simple walkthrough, using the above as an example, and I think others would also find this useful.

share|improve this question
Teach a Chinaman...? I've heard that saying before, but not specific in that way. –  KConrad Mar 5 '11 at 22:25

3 Answers 3

Here's how to this in Sage:

sage: var('x,y')
(x, y)
sage: E = EllipticCurve(y^2 == x^2 + x*(x+1)^2); E
Elliptic Curve defined by y^2 = x^3 + 3*x^2 + x over Rational Field
sage: E.rank()
sage: E.conductor()
sage: E.gens()
sage: E.torsion_points()
[(-1 : -1 : 1), (-1 : 1 : 1), (0 : 0 : 1), (0 : 1 : 0)]

or see the published worksheet.

If you had wanted to use Cremona's tables, you would have use some software (or by hand) to find the unique minimal Weierstrass model for your curve with $a_1,a_3 \in \{0,1\}$ and $a_2\in \{0,-1,1\}$, then look up that equation in his tables (some of the tables have the equations for curves in this form in the first column).

sage: E.minimal_model().a_invariants()
(0, 0, 0, -2, 1)

You can also look at my database by conductor (way more curves) or possibly this testing database. Lookup by equation isn't supported in my database yet.

By the way, in Sage, type EllipticCurve? for lots of help or see the documentation and also the documentation on databases.

share|improve this answer
That's fantastic! Very many thanks for your prompt replies, Guys (William and GH so far). Just a quick related question. I couldn't find anywhere the "compact" coefficient notation, ($a_1$, $a_2$, .. , $a_5$) was defined, i.e. what term goes with what coefficients. I could probably guess, or infer from examples or by trial and error; but it would be handy to see this mentioned somewhere. Same goes for the "reduced" form ($a_1$, $a_2"). I imagine that must represent $x^3 + a_1 x + a_2 = y^2$; but it could be $4 x^3 + .. $ –  John R Ramsden Mar 5 '11 at 21:39
It's like this: "y^2 + a1*xy + a3*y = x^3 + a2*x^2 + a4*x + a6". You can get this out of Sage as follows: "var('a1,a2,a3,a4,a6'); EllipticCurve([a1,a2,a3,a4,a6])" The way to *remember this is to think of x as degree 2, y as degree 3, and a_i as degree i; then the Weierstrass equation is homogenous of degree 6. –  William Stein Mar 5 '11 at 22:01

Sage has excellent documentation (short and long), and can be used online. I first used Sage when trying to find the rational points on a specific elliptic curve. It took me less than an hour to:

  1. find the website
  2. find and read the relevant instructions on the website
  3. write my first Sage notebook on the website
  4. find out the answer to my original question

Needless to say I learned much more during that short time than finding the answer. So why don't you go ahead and try Sage here. BTW Sage code for your problem was supplied on MO several times (look for user William Stein!). Also, you might find this link useful.

share|improve this answer

An alternative to Sage is Pari-GP. You initialize the curve with the vector $[a_1,a_2,a_3,a_4,a_6]$ such that $$ y^2 + a_1xy + a_3y = x^2 + a_2x^2+a_4x +a_6 $$ it identifies it in Cremona's Database giving directly it's name in the database, the minimal model, the generators of the free part in the minimal model and the change of variable to obtain it:

   E = ellinit( [0,0,3,1,0] ); ellidentify(E) 
     [["40a3", [0, 0, 0, -2, 1], []], [1, -1, 0, 0]]

meaning that the Cremona name is 40a3, it's minimal model is $[0,0,0,-2,1]$ that is: $$ Y^2 = X^3 -2X +1 $$ the $\mathtt{[]}$ meaning the rank is zero and finally that you obtain the minimal model making the change of variable $$(x,y) = (u^2 X + r, u^3Y+s u^2 X+r)$$ in this case: $(u,v,r,s) = [1,-1,-0,0]$ that is: $x = X-1, y = Y$.

share|improve this answer

Your Answer


