Ask Your Question

Revision history [back]

Determining Elliptic Curve Components

Say we have an elliptic curve:

R.<a,b,c> = QQ[]
cubic = a*(a+c)*(a+b)+b*(b+c)*(a+b)+c*(b+c)*(a+c)-4*(a+b)*(a+c)*(b+c)
E = EllipticCurve_from_cubic(cubic, morphism=False)
print(E)
print(E.minimal_model())

f = EllipticCurve_from_cubic(cubic, morphism=True)
finv = f.inverse()
generators = E.gens()

print
print("generators = %s" %(generators))

Output:

Elliptic Curve defined by y^2 + x*y = x^3 + 69*x^2 + 1365*x + 8281 over Rational Field
Elliptic Curve defined by y^2 + x*y + y = x^3 - 234*x + 1352 over Rational Field

generators = [(-39 : 52 : 1)]

How do we determine which of the two elliptic curve components a particular point is on? If we had this elliptic curve in the form $y^2 = x^3 + 109 x^2 + 234 x$ it'd be quite simple (if $x<0$ it's on the egg). Is there a nice way to automate this process in SageMath? For example, in this case the generator is on the egg.