/* Pari
/* Prime conductor for elliptic curves
/* Author: Joachim Wehler
*/
default(format, "f0.10" ); 
default(debugmem, "0" ); /* suppress warnings */
print ("====================================================");

print("Elliptic_curve_04: Start.\n");

\r Modular_Forms/ellprint;

/*
ellprint(E) =
{

	output = "Y^2";
	if (E.a1 !=0, output = concat(output, " + "); output = concat(output, E.a1 * YX));
	if (E.a3 !=0, output = concat(output, " + "); output = concat(output, E.a3 * Y));
	output = concat(output, " = X^3");
	if (E.a2 !=0, output = concat(output, " + "); output = concat(output, E.a2 * X^2));
	if (E.a4 !=0, output = concat(output, " + "); output = concat(output, E.a4 * X));
	if (E.a6 !=0, output = concat(output, " + "); output = concat(output, E.a6));
	return(output);
}
*/

default(parisizemax, "16G");
cases = [[ 0,0,0,7, 0],[ 0,0,0,3, 0],[ 0,0,0,73, 0],[ 0,0,0,89,0], [ 0,0,0,-82,0], [0, -1,0,-24649, 1355209], [0, 0, 0, -856967076, 0] ];
	
/* 	[0, -1, 0, -2069247973, 36191779888342 ] Wait for the result */

/* rank = 15: [1,0, 0, -209811944511283096494753999485,  26653992551590286206010035905960909459942897], PARI cannot handle this curve */

for  ( case = 1, matsize(cases)[2], {
		E	 		= ellminimalmodel(ellinit (cases[case]));		
		print( "Min. Weierstrass polynom.: ", ellprint(E));
		rank_analyt = ellanalyticrank(E)[1];
		print("Analytic rank: ", rank_analyt ,"\n");		
});

print("Elliptic_curve_04: End");				
print("====================================================");


