An implementation of the controlled reduction method for computing the Hasse-Weil zeta functions of smooth projective hypersurfaces over finite fields
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
conv
dr
dr_nd
examples
hypersurface
hypersurface_nd
matrix
solve_system
tools
vec_int64
wrapper
.gitignore
.travis.yml
GPLv2
GPLv3
LICENSE
Makefile.in
README.md
TODO.md
build_dependencies
configure
conv.h
dr.h
dr_nd.h
hypersurface.h
hypersurface_nd.h
matrix.h
solve_system.h
timing.h
tools.h
vec_int64.h
wrapper.h

README.md

controlled-reduction

Build Status

Abstract

An implementation of the controlled reduction method for computing the Hasse-Weil zeta functions of smooth projective hypersurfaces over finite fields. Explicitly, by computing a p-adic approximation of Frobenius action on p-adic cohomology (Monsky-Washnizter) with sufficient precision and then lifting its characteristic polynomial to the integers. An overview of the method can be found in:

  • "Computing zeta functions of nondegenerate projective hypersurfaces over finite fields", (under preparation) by Edgar Costa and David Harvey.
  • "Effective computations of Hasse-Weil zeta functions", by Edgar Costa

Dependencies

It majorly depends on:

Which depend on:

However, SageMath comes with all this libraries.

Installation

There are 2 options:

Using SageMath to provide the dependencies

  1. Figuring out where SageMath is installed. We recommend doing this and storing in an environmental variable by doing:
SAGE_ROOT=$(sage -c "print SAGE_ROOT")

Alternatively, in Sage do print SAGE_ROOT and on the unix terminal: SAGE_ROOT=<the line printed in Sage>

  1. Download controlled reduction
git clone https://github.com/edgarcosta/controlledreduction.git
  1. Change your working directory and run the configure file
cd controlledreduction && ./configure --with-ntl=$SAGE_ROOT/local
  1. Compile everything by doing
make
  1. Set up the variable $LD_LIBRARY_PATH, so the executables can find the libraries at run time. One can do this for the current terminal by doing:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SAGE_ROOT/local/lib

and for this line to be ran at the start of every session one can do

echo export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SAGE_ROOT/local/lib >> ~/.bashrc
  1. You can optionaly run some tests by doing
make check

or check out some of the examples

build/examples/K3_dwork

Manually specifying the path for the dependencies

  1. make sure you have the dependencies (see the source of the script build_dependencies if you would prefer to build them manually), if they are installed in a non-standard path, be sure to set $LD_LIBRARY_PATH accordingly.

  2. ./configure to generate the makefile.

    To link against the libaries by SageMath it should be sufficient to run ./configure --with-ntl=<SAGE_DIR>/local/.

    Run ./configure --help for more options.

  3. make to build everything

  4. make check to run some tests.