// Magma code for working with elliptic curve 2.0.8.1-144.2-a1

// (Note that not all these functions may be available, and some may take a long time to execute.)

// Define the base number field: 
R<x> := PolynomialRing(Rationals()); K<a> := NumberField(R![2, 0, 1]);

// Define the curve: 
E := EllipticCurve([K![0,1],K![0,0],K![0,1],K![5,0],K![-22,0]]);

// Compute the conductor: 
Conductor(E);

// Compute the norm of the conductor: 
Norm(Conductor(E));

// Compute the discriminant: 
Discriminant(E);

// Compute the norm of the discriminant: 
Norm(Discriminant(E));

// Compute the j-invariant: 
jInvariant(E);

// Test for Complex Multiplication: 
HasComplexMultiplication(E);

// Compute the Mordell-Weil rank: 
Rank(E);

// Compute the generators (of infinite order): 
gens := [P:P in Generators(E)|Order(P) eq 0]; gens;

// Compute the heights of the generators (of infinite order): 
[Height(P):P in gens];

// Compute the regulator: 
Regulator(gens);

// Compute the torsion subgroup: 
T,piT := TorsionSubgroup(E); Invariants(T);

// Compute the order of the torsion subgroup: 
Order(T);

// Compute the generators of the torsion subgroup: 
[piT(P) : P in Generators(T)];

// Compute the local reduction data at primes of bad reduction: 
LocalInformation(E);