The file katsurada.cl contains Common Lisp code implementing the approach of H. Katsurada (Am J Math 1999) for computing Fourier coefficients of Siegel Eisenstein series. It loads some precomputed values from precomputed_misc.cl and precomputed_zetads.cl See the code itself for a more detailed description and references. -------------------------- A Common Lisp interpreter is required to use this code. We have run the code with GNU CLISP (http://www.clisp.org/), which can be installed on OS X using Homebrew (http://brew.sh/), brew install clisp and on Ubuntu Linux using apt-get sudo apt-get install clisp or on Windows following the directions at http://www.clisp.org/ The Lisp code can be compiled into machine code or byte code for faster execution, if desired. For example, with clisp, the command clisp -c katsurada.cl -c precomputed_zetads.cl -c precomputed_misc.cl produces compiled byte-code of the three .cl files, with extensions .fas Then one can launch clisp, and use the command (load 'katsurada.cl) to load the source code, or (load 'katsurada.fas) to load the compiled code, or just (load 'katsurada) to let your Lisp implementation decide which to load. -------------------------- The file katsurada.cl includes a function cnk for computing the Fourier coefficient c_{n,k}(B,n,k) of the Siegel Eisenstein series of degree n and weight k for positive-definite half-integral matrices B, and a function fppolys for computing the polynomials F_p(B,X) from Katsurada, a component of c_{n,k} that may be of independent interest in some applications. For these functions the input B is not the matrix itself, but rather a representation of the genus symbol of the matrix, as in chapter 15 of Conway & Sloane's Sphere Packings, Lattices and Groups; see the file precomputed_misc.cl for details of the genus format. Mathematica code for computing the genus symbol for any positive definite symmetric integral matrix (which involves p-adic Jordan decompositions) is available at http://siegelmodularforms.org/pages/degree3/ Magma also has built-in functions pSignature, Oddity, pExcess for computing local invariants, and a function Genus for directly computing the genus of a lattice. In both cases some reformatting of the representation of the genus symbol is necessary to use it as input to the Lisp functions. This reformatting can be done within Mathematica, within Lisp, or with some other adapter or wrapper code, as in the example below. In this folder there a Perl script makeFpPolys.pl that takes as input a file consisting of genus symbols computed in Mathematica, reformats these symbols, and produces a Lisp file that loads katsurada.cl then calls the function fppolys once for each genus symbol. The Perl script then runs Lisp on this file, writing the results to a temp file, then reads in this temp file and reformats the results back in Mathematica code, appended to an output file. This output file can be used with the EisensteinCoefficient.nb Mathematica file from http://siegelmodularforms.org/pages/degree3/ to compute monic and scaled Fourier coefficients of Siegel Eisenstein series, including for positive semi-definite matrices. This Perl script requires that Perl is installed, and also that the Lisp interpreter specified by $mylisp in the Perl script (default value clisp) in the path environment variable ($PATH on Unix-like systems, %PATH% on windows). Alternatively, $mylisp may be modified to specify the full path. The Perl script can be run as follows: perl makeFpPolys.pl inputfile outputAppendFile The file fp-input-example.txt is an example input file, with two genus symbols,