Lattice Tester Guide
1.0-9
Software Package For Testing The Uniformity Of Integral Lattices In The Real Space
|
This class implements upper bounds on the lenght of the shortest nonzero vector in a lattice. More...
#include <latticetester/NormaBestBound.h>
Inherits LatticeTester::Normalizer< RedDbl >.
Public Member Functions | |
NormaBestBound (RedDbl &logDensity, int t, double beta=1) | |
Constructor for this class. More... | |
~NormaBestBound () | |
Destructor. More... | |
double | getGamma (int j) const |
Returns the value of the bound on the Hermite's constant \(\gamma_j\) in dimension \(j\). More... | |
Public Member Functions inherited from LatticeTester::Normalizer< RedDbl > | |
Normalizer (RedDbl &logDensity, int t, std::string Name, NormType norm=L2NORM, double beta=1) | |
Complete constructor for a Normalizer . More... | |
Normalizer (int t, std::string Name, NormType norm=L2NORM, double beta=1) | |
Constructor that does not take the density as an argument. More... | |
virtual | ~Normalizer () |
Destructor. More... | |
virtual void | init (RedDbl &logDensity, double beta) |
This is a method that will initialize the bounds this normalizer can return. More... | |
std::string | ToString () const |
Returns a string that describes this object. More... | |
NormType | getNorm () const |
Returns the norm associated with this object. More... | |
void | setLogDensity (RedDbl logDensity) |
Sets the log-density associated with this object to logDensity . More... | |
RedDbl | getLogDensity () const |
Returns the logDensity associated with this object. More... | |
void | setNorm (NormType norm) |
Sets the norm associated with this object to norm . More... | |
int | getDim () const |
Returns the maximal dimension for this object. More... | |
double | getPreComputedBound (int j) const |
Returns the bound for dimension j as computed in Normalizer::init(). More... | |
virtual RedDbl | getBound (int j) const |
Calculates and returns the bound on the length of the shortest nonzero vector in dimension j . More... | |
Additional Inherited Members | |
Static Public Attributes inherited from LatticeTester::Normalizer< RedDbl > | |
static const int | MAX_DIM = 48 |
The maximum dimension of the lattices for which this class can give an upper bound. More... | |
Protected Attributes inherited from LatticeTester::Normalizer< RedDbl > | |
std::string | m_name |
Name of the normalizer. More... | |
NormType | m_norm |
Norm associated with this object. More... | |
RedDbl | m_logDensity |
log of the density, ie log of the number of points of the lattice per unit of volume. More... | |
int | m_maxDim |
Only elements 1 to m_maxDim (inclusive) of m_bounds bellow will be pre-computed. More... | |
double | m_beta |
Beta factor used to give more or less importance to some of the dimensions. More... | |
double * | m_bounds |
Contains the bounds on the length of the shortest nonzero vector in the lattice in each dimension. More... | |
This class implements upper bounds on the lenght of the shortest nonzero vector in a lattice.
To obtain these bounds, this class contains hard-coded values of an approximation of the Hermite's constants \(\gamma_s\) that are the best upper bounds that we are aware of. These Hermite's constants are stored in a table accessible via the getGamma(int) const method.
For dimensions 0 through 8, the Hermite's constant are known exactly. For dimensions 9 through 36, see https://doi.org/10.4007/annals.2003.157.689. For dimensions 37 through 48 this uses Rogers's bound.
This class is to be used with the L2NORM (the Euclidian norm) exclusively. Note this class stores the log value of the density to handle larger values.
LatticeTester::NormaBestBound< RedDbl >::NormaBestBound | ( | RedDbl & | logDensity, |
int | t, | ||
double | beta = 1 |
||
) |
Constructor for this class.
Suppose we want to use this normalizer on a lattice with it's basis in the lines of \(V\) of dimension \(t\). We can call this constructor as NormaBestBound(abs(det(V)), t)
. getPreComputedBound(t) will then return an upper bound on the lenght of the shortest non-zero vector in dimension t
. In the case where the lattice also has the same density in lower dimensions than t
, pre-computed bounds will also be available.
The bias factor beta
gives more or less weight to some of the dimensions (see Normalizer for details). It is recommended to keep it at its default value because its usage is deprecated.
There is a restriction for t
to be \(\le48\).
LatticeTester::NormaBestBound< RedDbl >::~NormaBestBound | ( | ) |
Destructor.
|
inlinevirtual |
Returns the value of the bound on the Hermite's constant \(\gamma_j\) in dimension \(j\).
Reimplemented from LatticeTester::Normalizer< RedDbl >.