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

#include <Rank1Lattice.h>

Inherits LatCommon::IntLattice.

Public Member Functions

 Rank1Lattice (const MScal &n, const MVect &a, int d, NormType norm=L2NORM)
 Constructor. More...
 
 Rank1Lattice (const Rank1Lattice &Lat)
 Copy constructor.
 
Rank1Latticeoperator= (const Rank1Lattice &Lat)
 Assigns Lat to this object.
 
 ~Rank1Lattice ()
 Destructor.
 
std::string toStringCoef () const
 Returns the vector of multipliers \(a\) as a string.
 
void buildBasis (int d)
 Builds the basis in dimension \(d\).
 
void incDim ()
 Increases the dimension by 1.
 
- Public Member Functions inherited from LatCommon::IntLattice
 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.
 
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...
 
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 ()
 Initializes the rank 1 lattice.
 
- Protected Member Functions inherited from LatCommon::IntLattice
void init ()
 
void kill ()
 Cleans and releases all the memory allocated for this lattice.
 

Protected Attributes

MVect m_a
 The multipliers of the rank 1 lattice rule.
 
- Protected Attributes inherited from LatCommon::IntLattice
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

Note
Pierre (hidden): Il faut pouvoir choisir chaque \(a_i\) ind\'ependamment

This class implements a general rank 1 lattice basis. For the values \(a_1, a_2, \ldots, a_{d}\) given, the \(d\)-dimensional lattice basis is formed as:

\[ \mathbf{b_1} = (a_1, a_2, \ldots, a_{d}),\quad \mathbf{b_2} = (0, n, 0, \ldots, 0),\quad \ldots, \quad \mathbf{b_d} = (0, \ldots, 0, n) \]

Without loss of generality, one may choose \(a_1 = 1\).

Constructor & Destructor Documentation

LatCommon::Rank1Lattice::Rank1Lattice ( const MScal &  n,
const MVect &  a,
int  d,
NormType  norm = L2NORM 
)

Constructor.

\(d\) represents the number of multipliers in the array a.


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