Lattice Builder Manual
Software Package for Constructing Rank-1 Lattices
LatCommon::Normalizer Class Reference

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.
 

Detailed Description

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.

Member Function Documentation

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 double LatCommon::Normalizer::getGamma ( int  j) const
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.

Member Data Documentation

const int LatCommon::Normalizer::MAX_DIM = 48
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\).

Note
Richard: Je crois que ce facteur beta devrait disparaître car des poids beaucoup plus généraux sont maintenant implantées dans les classes *Weights.

The documentation for this class was generated from the following file: