LatNet Builder Manual
2.0.1-11
Software Package for Constructing Highly Uniform Point Sets
|
Classes which inherit from this base class are used in implementing bounds on the length of the shortest nonzero vector in a lattice [3] . More...
#include <Normalizer.h>
Inherited by LatticeTester::NormaBestLat< RedDbl >, LatticeTester::NormaLaminated< RedDbl >, LatticeTester::NormaMinkL1< RedDbl >, LatticeTester::NormaMinkowski< RedDbl >, LatticeTester::NormaPalpha< Int, RedDbl >, and LatticeTester::NormaRogers< RedDbl >.
Public Member Functions | |
Normalizer (RedDbl &logDensity, int t, std::string Name, NormType norm=L2NORM, double beta=1) | |
Constructor for the bounds. More... | |
Normalizer (int t, std::string Name, NormType norm=L2NORM, double beta=1) | |
Constructor only used by the NormaPalpha class. More... | |
virtual | ~Normalizer () |
Destructor. | |
virtual void | init (RedDbl &logDensity, double beta) |
Initializes the bounds on the length of the shortest vector. More... | |
std::string | ToString () const |
Returns this object as a string. | |
NormType | getNorm () const |
Returns the norm associated with this object. | |
void | setLogDensity (RedDbl logDensity) |
Sets the log-density associated with this object to logDensity . | |
RedDbl | getLogDensity () const |
Returns the logDensity associated with this object. | |
void | setNorm (NormType norm) |
Sets the norm associated with this object to norm . | |
int | getDim () const |
Returns the maximal dimension for this object. | |
double | getPreComputedBound (int j) const |
Returns the bound on the length of the shortest nonzero vector in dimension \(j\) as computed in Normalizer::init. | |
double | getBound (int j) const |
Calculates and returns the bound on the length of the shortest nonzero vector in dimension \(j\). | |
virtual double | getGamma (int j) const |
Returns the value of the lattice constant \(\gamma_j\) in dimension \(j\). More... | |
Static Public Attributes | |
static const int | MAX_DIM = 48 |
Protected Attributes | |
std::string | m_name |
Name of the normalizer. | |
NormType | m_norm |
Norm associated with this object. | |
RedDbl | m_logDensity |
log of the density, ie log of the number of points of the lattice per unit of volume. | |
int | m_maxDim |
Only elements 1 to m_maxDim (inclusive) of arrays are defined. | |
double | m_beta |
Beta factor. | |
double * | m_bounds |
Contains the bounds on the length of the shortest nonzero vector in the lattice in each dimension. | |
Classes which inherit from this base class are used in implementing bounds on the length of the shortest nonzero vector in a lattice [3] .
These bounds are used to normalize the length of the shortest vectors. Tight lower bounds are available for all dimensions for many important cases. In most cases, the \({\mathcal{L}}_2\) norm is used to compute the length of vectors.
For some figures of merit, no useful bounds are known to normalize the length of the shortest vector. In these cases, this base class will be used as normalizer since it simply sets all normalization constants to 1. This is necessary because the tests compare the normalized values of the merit when searching for good lattices.
LatticeTester::Normalizer< RedDbl >::Normalizer | ( | RedDbl & | logDensity, |
int | t, | ||
std::string | Name, | ||
NormType | norm = L2NORM , |
||
double | beta = 1 |
||
) |
Constructor for the bounds.
Deals with lattices having \(n\) points per unit volume, in all dimensions \(\le t\). Name
is the name of the Normalizer. The bias factor beta
\(= \beta\) gives more weight to some of the dimensions: taking \(\beta< 1\) inflates the figure of merit by \((1/\beta)^t\), thus weakening the requirements for large \(t\) in a worst-case figure of merit. One normally uses \(\beta= 1\). Note that the log value of the density is stored (instead of the density itself) so it is easier to manipulate really large values of density.
beta
devrait disparaître car des poids beaucoup plus généraux sont maintenant implantés dans les classes *Weights
. References LatticeTester::Normalizer< RedDbl >::m_bounds.
LatticeTester::Normalizer< RedDbl >::Normalizer | ( | int | t, |
std::string | Name, | ||
NormType | norm = L2NORM , |
||
double | beta = 1 |
||
) |
Constructor only used by the NormaPalpha class.
It doesn't take any log density argument. This only works for rank1 lattices, having m points per unit of volume (m being a prime number), normalized with NormaPalpha.
References LatticeTester::Normalizer< RedDbl >::m_bounds.
|
virtual |
Returns the value of the lattice constant \(\gamma_j\) in dimension \(j\).
For this base class, always returns 1.
Reimplemented in LatticeTester::NormaMinkL1< RedDbl >, LatticeTester::NormaRogers< RedDbl >, LatticeTester::NormaBestLat< RedDbl >, LatticeTester::NormaLaminated< RedDbl >, and LatticeTester::NormaMinkowski< RedDbl >.
|
virtual |
Initializes the bounds on the length of the shortest vector.
The lattices have \(Density\) points per unit volume and the bias factor is beta
for all dimensions \(j\le\) maxDim
.
Referenced by LatticeTester::NormaBestLat< RedDbl >::NormaBestLat(), LatticeTester::NormaLaminated< RedDbl >::NormaLaminated(), LatticeTester::NormaMinkL1< RedDbl >::NormaMinkL1(), LatticeTester::NormaMinkowski< RedDbl >::NormaMinkowski(), and LatticeTester::NormaRogers< RedDbl >::NormaRogers().