from sympy.ntheory.elliptic_curve import EllipticCurve def test_elliptic_curve(): # Point addition and multiplication e3 = EllipticCurve(-1, 9) p = e3(0, 3) q = e3(-1, 3) r = p + q assert r.x == 1 and r.y == -3 r = 2*p + q assert r.x == 35 and r.y == 207 r = -p + q assert r.x == 37 and r.y == 225 # Verify result in http://www.lmfdb.org/EllipticCurve/Q # Discriminant assert EllipticCurve(-1, 9).discriminant == -34928 assert EllipticCurve(-2731, -55146, 1, 0, 1).discriminant == 25088 # Torsion points assert len(EllipticCurve(0, 1).torsion_points()) == 6