From: mdekker@fwi.uva.nl (Martijn Dekker) Newsgroups: sci.math Subject: zeta functions of schemes Date: 17 Jan 1995 16:00:12 +0100 Hi, just for fun I am writing a program that calculates (approximates) the zeta function of a curve in projective 3-space, defined over a finite field Fp. To do this one needs to count points on the curve C. First count all points with coordinates in Fp, call this number N_1, then count the points with coordinates in Fp^2, call this number N_2 etc. Now the zeta function of C is defined as Z(t) = exp(N_1 * t + (N_2)/2 * t^2 + (N_3)/3 * t^3 + ... ) Of course, to count points on Fp^i one needs a representation of this field. I use Fp^i = Fp[X]/f, where f is an irreducible polynomial in Fp[X] of degree i. The problem is: how to find such an f. Of course I could use symbolic packages (such as Maple, Mathematica or Reduce) to do this, but I like to do some real programming and I have written it in C. The program stores the polynomials it finds in a database, so he only starts searching for a polynomial of given degree over a given Fp, when such a polynomial is not already in the database. But still, I would like to make this 'search for f' routine as fast as possible. The obvious tricks to find factors of polynomials I already implemented (looking for zeros etc). My question: anyone knows of clever tricks to see if a polynomial cannot be irreducible (or must be irreducible) ? The program to find an f is already up and running but I would like to optimize it. Now I am writing the code of actually counting the points... If anyone is interested in this program (when it is finished) just send me mail, and I will send you a copy. It is plain ANSI C and runs on ANY computer (assuming you have a ANSI C Compiler) -- Martijn Dekker +--- Ishido by PFF software ---+ University of Amsterdam | For info about this great puzzle game: | Math department | finger -l mdekker@turing.fwi.uva.nl or | E-mail: mdekker@fwi.uva.nl | http://www.fwi.uva.nl/~mdekker/home.html |