# SageMath code for working with elliptic curve 3.3.961.1-4.1-a3 # (Note that not all these functions may be available, and some may take a long time to execute.) # Define the base number field: R. = PolynomialRing(QQ); K. = NumberField(R([8, -10, -1, 1])) # Define the curve: E = EllipticCurve([K([1,0,0]),K([-1,1,0]),K([-2,-1/2,1/2]),K([7462877426720882640138607519245152578,-14130218892584489931013217519954906083/2,-6151408334958753821769050847112196849/2]),K([-20161796947667300676602389656879723718330935346799904418,38174364638273178291400194444212921470457543144134251711/2,16618716709396809372366318063381491518225891025259152029/2])]) # Test whether it is a global minimal model: E.is_global_minimal_model() # Compute the conductor: E.conductor() # Compute the norm of the conductor: E.conductor().norm() # Compute the discriminant: E.discriminant() # Compute the norm of the discriminant: E.discriminant().norm() # Compute the j-invariant: E.j_invariant() # Test for Complex Multiplication: E.has_cm(), E.cm_discriminant() # Compute the Mordell-Weil rank: E.rank() # Compute the generators (of infinite order): gens = E.gens(); gens # Compute the heights of the generators (of infinite order): [P.height() for P in gens] # Compute the regulator: E.regulator_of_points(gens) # Compute the torsion subgroup: T = E.torsion_subgroup(); T.invariants() # Compute the order of the torsion subgroup: T.order() # Compute the generators of the torsion subgroup: T.gens() # Compute the local reduction data at primes of bad reduction: E.local_data()