Frobenius matrix project
------------------------

It is probably best to contact me (Johan de Jong) in case you have any 
trouble compiling/running/understanding output this program produces
since I haven't tried to make it userfriendly. In particular I have
not put in all possible checks to verify that you are running the
program with reasonable inputs.

Minimal instructions
--------------------

Requirements: gcc and GNU make.

Before you compile you should edit the file data.h and set the weights di
and degree d. Good choices of values for these are in various files in this
directory. As well you should set the prime p and number of terms in the
expansion q. Good values for p are 2,3,5,7 and 11. Try running the program
with a small value of q first. The invariant r should be set as well which
is the power of p modulo which we are doing the computations. This should
usually be set a good deal higher than q especially for smaller primes.
After editing data.h run ``make'', or "make input_pol". The first produces
an executable that runs without input to compute the Frobenius matrix for a
random quasi-smooth element over F_p of the linear system you chose. The
target ``input_pol'' produces an executable that lets you input the
coefficients of the equation for the hypersurface.

Enjoy!


Different versions of the Frobenius matrix project
--------------------------------------------------

master
------
This computes the action of Frobenius on the primitive rigid cohomology in
degree 2 of quasi-smooth hypersurfaces in 3-dimensional weighted projective
spaces, using the representation of de Rham cohomology by forms on the
complement. Note that it is important to make sure that you use well-formed
quadruples of degrees in order to have correct output. For a list of possible
weights d1, d2, d3, d4 and degree of hypersurface d see the file
	surface_pg_at_most_10_new

powers
------
Variant of master which uses a different representation of p-adic integers
which is usually slower but which (in special circumstances when p is very
small and q is large) uses less memory. Mathematically equivalent to master.

curves
------
Computes the Frobenius matrix on the first rigid cohomology of quasi-smooth
curves in 2-dimensional weighted projective spaces. Same caveats as with
master and same method. For a list of possible weights d1, d2, d3 and degree
of curve d see the file
	curves_genus_at_most_10

curves_powers
-------------
Variant of curves using a different representation of p-adic integers.

double
------
This computes the action of Frobenius on the primitive part of the rigid
cohomology in degree 2 of double covers of weighted projective spaces
ramified along quasi-smooth curves (of even degree d >= 2*d1+2*d2+2*d3).
Thanks to Alan Lauder for pointing out this would run much faster than
the original master -- also it is much closer to Kiran's oringinal
idea for computing Frobenius matrices of hyperelliptic curves. For a list
of possible weights d1, d2, d3 and degree of curve d see the file
	double_covers_pg_at_most_10_new

double_powers
-------------
Variant of double using a different representation of p-adic integers.
