__________________________________________________ LIBWEIL — COMPUTING WITH THE WEIL REPRESENTATION OF LATTICES __________________________________________________ Dependencies ============ Other versions may work but this hasn't been tested - eigen (version 3.4.0) - GAP (version 4.11.1) - GMP (version 6.2.1) - PARI/GP (version 2.15.2) Using the [GNU Guix] package manager, you can simple run ,---- | guix shell -f guix.scm `---- to get a shell with everything set up. You can also authenticate the git history with ,---- | guix git authenticate -k origin/keyring \ | 1fb8ce84b2e4329007a23c047a8ea211d629da00 \ | 'D5BA 4708 FA7D 0AFD 9C0E 6556 ECD7 F82F 5327 404C' `---- [GNU Guix] <https://guix.gnu.org/> Usage ===== Matrices have to be formatted as white-space (in particular the space and newline character work) seperated lists of numbers. As an example, to calculate the vector-valued theta function of the lattice of genus \(2_{2}^{2}\) up to \(q^{4}\) (after factoring out the offset) you would use: ,---- | cat >gram_matrix.txt <<EOF | 2 0 | 0 2 | EOF | | weil VV-Theta-Series gram_matrix.txt 4 `---- This produces the output ,---- | (0 0): 1 + 4q + 4q^(2) + 4q^(4) | (0 1): q^(1/4)(2 + 4q + 2q^(2) + 4q^(3) + 4q^(4)) | (1 0): q^(1/4)(2 + 4q + 2q^(2) + 4q^(3) + 4q^(4)) | (1 1): q^(1/2)(4 + 8q^(2) + 4q^(4)) `---- You can also use the `--print-style' flag for easier copy-pasting into SageMath and PARI/GP. To get the automorphisms of a lattice, you have to do ,---- | weil Lattice-smith-gram-matrix gram_matrix.txt >smith_gram_matrix.txt | weil-get-automorphisms.sh smith_gram_matrix.txt aut.txt `---- Note that you *have* to use the lattice returned by `Lattice-smith-gram-matrix', otherwise you will get wrong results. Then you can use it, e.g. by ,---- | weil DS-get-orbits gram_matrix.txt aut.txt | column -ts$'\t' -R0 `---- which produces the output ,---- | representative name length norm order | (0 0) 0A 1 0 1 | (0 1) 1A 2 1/4 2 | (1 1) 2A 1 1/2 2 `---- Warning ======= The function `DiscriminantForm::xc' assumes that for a discriminant group \(D\) the intersection of \(D_{c}\) and \(D^{c*}\) contains exactly one element. If this is not the case for your lattice, then the function `DiscriminantForm::transformation_matrix' and the command `Transformation-Matrix' may produce wrong output. License ======= This project is released under the GPL version 3.0 or later (see the file `COPYING').
Herbers, Maik
authored
* src/weil.cpp (print_version): New function. (print_help): Add version flag here. * Makefile (CPPFLAGS): Define `WEIL_VERSION'.
Name | Last commit | Last update |
---|---|---|
include | ||
scripts | ||
src | ||
.clang-format | ||
.guix-authorizations | ||
COPYING | ||
Makefile | ||
README | ||
guix.scm | ||
libweil.pc.in |