/* Pari
/* Hasse estimate for elliptic curves in Weierstrass normal form y^2 = x^3 + A*x + B
/* Author: Joachim Wehler
*/
default(format, "f0.10" ); 

print ("====================================================");
A = 0;
B = -17;
E = [ 0, 0, 0, A, B];
E = ellinit (E);
E = ellminimalmodel(E);
E_red = ellglobalred(E); 
N = E_red[1];
print ( "Elliptic curve: y^2 = x^3 + "E[4] "*x + (",E[5], ")");
print ( "Discriminant: ", E.disc, " = ", factor(E.disc) );
/* print ( "Conductor: ", N, " = ", factor(N)); */
print ( "j(E): ", E.j);

print ( "Number of points in E[F_p]: ");
print ("----------------------------------");

i_max = 26;
prime_vector = primes(i_max);
for ( i=1, i_max, {
	   p 		= prime_vector[i];
	   epsilon 	= 2 * sqrt(p);
       c 		= ellcard(E,p);
	   a_p		= (1+p)-c;	   
	   print ( "card E[F_",p,"] = ", c,
               ", |a_p| = ", sign(a_p) * a_p,
		       ", 2 * sqrt(", p, ") = ", epsilon);				
     })

print("====================================================");


