Lattice Tester Online Documentation 0.1.0-861
Software Package For Testing The Uniformity Of Integral Lattices In The Real Space
|
These pages provide an online API documentation of Lattice Tester, a C++ library for measuring the uniformity of integral lattices in the real space. This version is still under construction; the previous version can be found HERE. More details on the purpose of Lattice Tester, the mathematics behind, the algorithms, its organization, and examples of programs that use it, can be found in the Lattice Tester User's Guide (in .pdf), which is really the core documentation.
Lattice Tester was built primarily as a base library for LatNet Builder, and LatMRG. It relies heavily on the Number Theory Library (NTL), which can be found at https://www.shoup.net/ntl/. It is free open source software, distributed under the Apache 2.0 License. This documentation was automatically generated by Doxygen from the code (mostly the .h files).
We summarize the organization of the main files and classes of Lattice Tester. The main type of object handled by this software is an IntLattice
, which represents an integral lattice. An IntLattice
object has a dimension \(t\), a scaling factor \(m\), a basis, an \(m\)-dual basis (optional), a norm to measure vector lengths, etc. The IntLattice
class provides methods to manipulate the lattice and perform certain operations such as to construct a projection over a subset of coordinates, to compute and store the norms of the basis or \(m\)-dual basis vectors, permute the basis vectors, sort them by length, etc.
The abstract class IntLatticeExt
extends IntLattice
and contains (additional) virtual methods that must be defined in its subclasses because these methods depend on how the lattices are constructed. It specified an interface for the specialized subclasses that define specific types of lattices. There are virtual methods to construct a basis or an \(m\)-dual basis, to extend the current basis (or its \(m\)-dual) by one coordinate, and recompute a basis for different numbers of dimensions and subsets of coordinates. One subclass of IntLatticeExt
offered in Lattice Tester is Rank1Lattice
, whose objects are lattices of rank 1 as commonly used for lattice rules in quasi-Monte Carlo integration. Other subclasses are defined in LatMRG.
The file BasisConstruction
provides static methods to construct a lattice basis from an arbitrary set of generating vectors, to compute the \(m\)-dual of a given basis, and to compute a basis for the projection of a lattice over a given subset of coordinates. In many cases, a lattice basis can be constructed directly by exploiting the definition and structure of the lattice. This is done in the subclasses of IntLatticeExt
.
The file ReducerStatic
provides static functions to reduce a lattice basis via LLL or BKZ by using slightly modified versions of NTL functions, using the \(L^2\) norm to measure vector lengths. The class ReducerBB
implements a branch-and-bound (BB) algorithm to compute a shortest nonzero lattice vector for either the \(L^2\) or \(L^1\) norm. It also offers a procedure to compute a Minkowski-reduced basis and the Beyer quotient. These tools require that a lattice basis has already been constructed.
The length of the shortest vector can be normalized (usually to a value between 0 and 1) by using one of the normalizations implemented in the Norma...
subclasses of Normalizer
. Several possible normalizations are offered for the \(L^2\) norm, and a single choice for the \(L^1\) norm.
A subset \(I\) of coordinates is represented by an object of the class Coordinates
. It defines a projection \(L_I\) of the lattice over these coordinates. A CoordinateSets
object can represent a set of such subsets of coordinates; i.e., a set of projections of the lattice.
The subclasses of Weights
, named Weights...
, offer facilities to give different weights to specific subsets of coordinates (uniform weights, product weights, order-dependent weights, POD weights, projection-dependent weights). This can be used to compute FOMs as discussed next.
The class FigureOfMeritM
permits one to compute a figure of merit defined by taking the weighted normalized shortest vector length for each projection in a given set, and then taking the worst case. FigureOfMeritDualM
does the same in the dual space.
The following files provide basic tools used mostly in other classes. They contain a lot of legacy functions that are not used directly in Lattice Tester but may be used by other software that use Lattice Tester, e.g., by Latnet Builder. EnumTypes
collects the definitions of the basic enumeration types used in Lattice Tester. FlexTypes
defines the flexible integer and real types for vectors and matrices. Util
implements simple utility functions. Num
implements some mathematical functions. NTLWrap
is a wrapper to NTL; it extends certain NTL classes and provides a few basic utilities not offered in NTL. Random
implements a 64-bit uniform random number generator, used when we make random selections.