Skip to content
Snippets Groups Projects
Maik Herbers's avatar
Herbers, Maik authored
* src/weil.cpp (print_version): New function.
(print_help): Add version flag here.
* Makefile (CPPFLAGS): Define `WEIL_VERSION'.
5aafc598
History
           __________________________________________________

            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').