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

This class offers tools to manipulate lattice bases. More...

#include <IntLattice.h>

Inherited by LatCommon::KorobovLattice, and LatCommon::Rank1Lattice.

Public Member Functions

 IntLattice (const MScal &m, int k, int maxDim, NormType norm=L2NORM)
 Constructor. More...
 
 IntLattice (const IntLattice &Lat)
 Copy constructor. More...
 
IntLatticeoperator= (const IntLattice &Lat)
 Assigns Lat to this object. More...
 
virtual ~IntLattice ()
 Destructor.
 
void copy (const IntLattice &lattice)
 Same as assignment operator above.
 
int getDim () const
 Returns actual dimension Dim.
 
void setDim (int d)
 Sets actual dimension to \(d\).
 
int getMaxDim () const
 Returns the maximal dimension of the lattice.
 
virtual void incDim ()
 Increases dimension Dim by 1.
 
virtual void buildBasis (int d)
 Builds the basis for the lattice in dimension d.
 
NormType getNorm () const
 Returns the norm used by the lattice.
 
MScal getM () const
 Returns the value of the modulus \(m\) of the recurrence (the number of points of the lattice).
 
NScal getM2 () const
 Returns the square number of points in the lattice.
 
int getOrder () const
 Returns the order.
 
NormalizergetNormalizer (NormaType norma, int alpha)
 Creates and returns the normalizer corresponding to criterion norma. More...
 
virtual std::string toStringCoef () const
 Returns the vector of multipliers (or coefficients) \(A\) as a string.
 
BasegetPrimalBasis ()
 Returns the primal basis V.
 
BasegetDualBasis ()
 Returns the dual basis W.
 
void calcLgVolDual2 (bool dualF)
 Computes the logarithm of the normalization factor m_lgVolDual2 for the merit in all dimensions % \(\le \) maxDim for the dual lattice if dualF is true, and for the primal lattice if dualF is false.
 
double getLgVolDual2 (int i) const
 
bool getXX (int i) const
 
void setXX (bool val, int i)
 
void sort (int d)
 Sorts the basis vectors with indices from \(d+1\) to the dimension of the basis by increasing length. More...
 
void permute (int i, int j)
 Exchanges vectors \(i\) and \(j\) in the basis and in the dual basis.
 
void write (const char *filename) const
 Writes this basis in file named filename.
 
void trace (char *msg)
 For debugging purposes.
 
void write (int flag)
 Writes this basis on standard output. More...
 
void dualize ()
 Exchanges basis \(V\) and its dual \(W\).
 
bool checkDuality ()
 Checks that the bases satisfy the duality relation \(V[i]\cdot W[j] = m\,\delta_{ij}\). More...
 
bool baseEquivalence (IntLattice &Lat)
 Checks that Lat's basis and this basis are equivalent. More...
 
void buildProjection (IntLattice *lattice, const Coordinates &proj)
 Builds the basis (and dual basis) of the projection proj for this lattice. More...
 

Protected Member Functions

void init ()
 
void kill ()
 Cleans and releases all the memory allocated for this lattice.
 

Protected Attributes

int m_order
 The order of the basis.
 
MScal m_m
 Number of points per unit volume (m_m) and its square (m_m2).
 
NScal m_m2
 
double m_lgm2
 The logarithm \(\log_2 (m^2)\).
 
Base m_v
 Primal basis of the lattice.
 
Base m_w
 Dual basis of the lattice.
 
double * m_lgVolDual2
 
bool * m_xx
 Work variables.
 
MScal m_t1
 
MScal m_t2
 
MScal m_t3
 
BMat m_vSI
 
Base m_vTemp
 

Detailed Description

This class offers tools to manipulate lattice bases.

Each lattice is represented by a basis \(V\) and its dual \(W\). It is sometimes possible, as in the case of lattices associated with LCGs (linear congruential generators) or MRGs (multiple recursive generators), to multiply a lattice (and its dual) by a constant factor \(m\) in such a way that they are included in \(\mathbb{Z}^t\), allowing exact representation of basis vector coordinates. The duality relation will then read \(V_i\cdot W_j = m\delta_{ij}\) for some integer constant { \(m\)}.

Constructor & Destructor Documentation

LatCommon::IntLattice::IntLattice ( const MScal &  m,
int  k,
int  maxDim,
NormType  norm = L2NORM 
)

Constructor.

The modulus is initialized to \(m\), the maximal dimension of the bases is set to maxDim, and the order is set to \(k\).

LatCommon::IntLattice::IntLattice ( const IntLattice Lat)

Copy constructor.

The maximal dimension of the created basis is set equal to Lat's current dimension.

Member Function Documentation

bool LatCommon::IntLattice::baseEquivalence ( IntLattice Lat)

Checks that Lat's basis and this basis are equivalent.

If so, returns true, otherwise returns false.

void LatCommon::IntLattice::buildProjection ( IntLattice lattice,
const Coordinates proj 
)

Builds the basis (and dual basis) of the projection proj for this lattice.

The result is placed in the lattice lattice. The basis is triangularized to form a proper basis.

bool LatCommon::IntLattice::checkDuality ( )

Checks that the bases satisfy the duality relation \(V[i]\cdot W[j] = m\,\delta_{ij}\).

If so, returns true, otherwise returns false.

Normalizer* LatCommon::IntLattice::getNormalizer ( NormaType  norma,
int  alpha 
)

Creates and returns the normalizer corresponding to criterion norma.

In the case of the \(P_\alpha\) test, the argument alpha = \(\alpha\). In all other cases, it is unused.

IntLattice& LatCommon::IntLattice::operator= ( const IntLattice Lat)

Assigns Lat to this object.

The maximal dimension of this basis is set equal to Lat's current dimension.

void LatCommon::IntLattice::sort ( int  d)

Sorts the basis vectors with indices from \(d+1\) to the dimension of the basis by increasing length.

The dual vectors are permuted accordingly. Assumes that the lengths of the corresponding basis vectors % VV and WW are up to date.

void LatCommon::IntLattice::write ( int  flag)

Writes this basis on standard output.

If flag \( > 0\), the norm of the basis vectors will be recomputed; otherwise not.


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