/* Pari
/* Weierstrass polynomial
/* Author: Joachim Wehler
*/
default(format, "f0.10" ); 

print ("====================================================");
print ( "Elliptic curve weierstrass_equation_12 = Start.\n");

/* Choose testcase */

/*
case = 0;

if (case == 0, { print("current case = 0"); param = [0,0,0,0,15625]; print("15625 = ", factor(15625));}) 
if (case == 1, { print("current case = 1"); param = [0,0,0,-3,3];})
if (case == 2, { print("current case = 2"); param = [0,0,0,1,0];})
if (case == 3, { print("current case = 3"); param = [0,0,0,-1,0];})
if (case == 4, { print("current case = 4"); param = [6,-3,9,-16,-14];})
if (case == 5, { print("current case = 5"); param = [0,1,-1,0,0];})

*/

cases = [[0,0,0,0,15625], [0,0,0,1/5,1]];

for (case = 1, matsize(cases)[2], \
{
	param = cases[case];
	print ( "Elliptic curve parameter = ", param);

	E_0   = ellinit(param, D=1);
	E_min = ellminimalmodel(E_0);
	gr	  = ellglobalred(E_0);
	E_int = ellintegralmodel(E_0);	
	conductor = gr[1];
	E_change= ellchangecurve(E_0, gr[2]);
	print ("Elliptic curve, Weierstrass equation: Y^2 + ",E_0[1],"*XY + ", E_0[3], "*Y = X^3 + ",E_0[2],"*X^2 + ", E_0[4],"*X + ", E_0[5]);
	print ("Discriminant = ", E_0.disc, " = ", factor(E_0.disc));
	print();

	print ("Elliptic curve, global minimal Weierstrass equation: Y^2 + ",E_min[1],"*XY + ", E_min[3], "*Y = X^3 + ",E_min[2],"*X^2 + ", E_min[4],"*X + ", E_min[5]);
	print ("Discriminant = ", E_min.disc, " = ", factor(E_min.disc));
	/*
	print ("Conductor = ", conductor, " = ", factor(conductor));
	print();
	print ("Elliptic curve, after ellchangecurve Weierstrass equation: Y^2 + ",E_change[1],"*XY + ", E_change[3], "*Y = X^3 + ",E_change[2],"*X^2 + ", E_change[4],"*X + ", E_change[5]);
	print();
	print ("Elliptic curve, integral model Weierstrass equation: Y^2 + ",E_int[1],"*XY + ", E_int[3], "*Y = X^3 + ",E_int[2],"*X^2 + ", E_int[4],"*X + ", E_int[5]);
	print();
*/
	
	print("---------------------------------------------");
});

print ( "Elliptic curve weierstrass_equation_12 = End.");
print("====================================================");


