1 | initial version |

In general, to bring an equation of the form: $$ y^2 = Ax^4+Bx^3+Cx^2+Dx+q^2 $$ into the Weierstraß form, the used substitution is given by using: $$ \begin{aligned} Q &= 2q\ ,\\ X &= ( Q(y+q)+Dx )\cdot\frac 1{x^2}\ ,\\ Y &= ( Q^2(y+q) + Q(Cx^2+Dx) - D^2x^2/Q)\cdot\frac 1{x^3}\ .\\ &\text{ Backwards:}\\ x &= (Q(X+c)-D^2/Q)\cdot\frac 1Y\ ,\\ y &= -q + x(xX-D)/Q\ . \end{aligned} $$ Note that it is needed to have a square as the free coefficient in the quartic $Ax^4+Bx^3+Cx^2+Dx+q^2$ on the RHS of the equation we start with.

Reference: [Ian Conell, Elliptic Curves Hanbook, page 105, Quartic to Weierstrass] .

In our case, the free coefficient is $-1$, so we really need to pass to the Gaussian field $\Bbb Q(i)$. The following code gives the transformation:

```
sage: F.<j> = QuadraticField(-1)
sage: R.<X,Y> = PolynomialRing(F)
sage: A, B, C, D, q = 1, 0, 81473/1024, 0, j
sage: Q = 2*q
sage: x = (Q*(X+C) - D^2/Q) / Y
sage: y = -q + x*(x*X - D) / Q
sage: factor( y^2 - (A*x^4 + B*x^3 + C*x^2 + D*x + q^2) )
(-4) * Y^-4 * (X + 81473/1024)^3 * (X^3 + 81473/1024*X^2 - Y^2 + 4*X + 81473/256)
```

So the given quartic is birationally (there are some other factors...) equivalent to $$ Y^2 = X^3 + 81473/1024 X^2 + 4X + 81473/256\ . $$ So we obtain an elliptic curve with the following minimal model:

```
sage: E = EllipticCurve( QQ, [ 0, 81473/1024, 0, 4, 81473/256 ] )
sage: EM = E.minimal_model()
sage: EM
Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 138026392*x + 629434426201 over Rational Field
sage: EM.discriminant().factor()
-1 * 2^16 * 46229^2 * 143677^2
```

Alternative blind code to obtain the above curve is as follows:

```
sage: R.<x,y> = QQ[]
sage: C = Curve( -y^2 + x^4 + 81473/1024*x^2 - 1 )
sage: JC = Jacobian(C)
sage: JCM = JC.minimal_model()
sage: JC
Elliptic Curve defined by y^2 = x^3 - 6625266817/3145728*x + 543881033738945/14495514624 over Rational Field
sage: JCM
Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 138026392*x + 629434426201 over Rational Field
sage: JCM.discriminant().factor()
-1 * 2^16 * 46229^2 * 143677^2
```

(But doing this blindly does not provide a way to see which points correspond to which points.)

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.