Lattice Builder Manual
Software Package for Constructing Rank-1 Lattices
|
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 LatCommon::NormaBestLat, LatCommon::NormaLaminated, LatCommon::NormaMinkL1, LatCommon::NormaMinkowski, and LatCommon::NormaRogers.
Public Member Functions | |
Normalizer (const MScal &m, int k, int t, std::string Name, NormType norm=L2NORM, double beta=1) | |
virtual | ~Normalizer () |
Destructor. | |
void | init (const MScal &m, int k, 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 | setNorm (NormType norm) |
Sets the norm associated with this object to norm . | |
int | getDim () const |
Returns the maximal dimension for this object. | |
double & | getCst (int j) |
Returns the bound on the length of the shortest nonzero vector in dimension \(j\). More... | |
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 |
Constructor for the bounds. More... | |
Protected Attributes | |
std::string | m_name |
Name of the normalizer. | |
NormType | m_norm |
Norm associated with this object. | |
MScal | m_m |
Number of points of the lattice per unit volume. | |
int | m_rank |
Rank of the lattice. | |
int | m_maxDim |
Only elements 1 to m_maxDim (inclusive) of arrays are defined. | |
double | m_beta |
Beta factor. | |
double * | m_cst |
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 \({\cal 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.
double& LatCommon::Normalizer::getCst | ( | int | j | ) |
Returns the bound on the length of the shortest nonzero vector in dimension \(j\).
% Indices \(j\) goes from 1 to the value returned by dim
.
|
virtual |
Returns the value of the lattice constant \(\gamma_j\) in dimension \(j\).
For this base class, always returns 1.
Reimplemented in LatCommon::NormaMinkL1, LatCommon::NormaBestLat, LatCommon::NormaLaminated, LatCommon::NormaRogers, and LatCommon::NormaMinkowski.
void LatCommon::Normalizer::init | ( | const MScal & | m, |
int | k, | ||
double | beta | ||
) |
Initializes the bounds on the length of the shortest vector.
The lattices have \(m\) points per unit volume, are of rank \(k\), and the bias factor is beta
for all dimensions \(j \le \) maxDim
.
|
static |
Constructor for the bounds.
Deals with lattices of rank \(k\), having \(m\) 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\).
beta
devrait disparaître car des poids beaucoup plus généraux sont maintenant implantées dans les classes *Weights
.