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

This class implements lattice bases built from a Korobov lattice rule. More...

#include <KorobovLattice.h>

Inherits LatCommon::IntLattice.

Public Member Functions

 KorobovLattice (const MScal &n, const MScal &a, int maxDim, NormType norm=L2NORM)
 Constructs a Korobov lattice with \(n\) points, maximal dimension maxDim using the norm norm.
 KorobovLattice (const MScal &n, const MScal &a, int dim, int t, NormType norm=L2NORM)
 Constructor. More...
 KorobovLattice (const KorobovLattice &Lat)
 Copy constructor.
KorobovLatticeoperator= (const KorobovLattice &Lat)
 Assigns Lat to this object.
 ~KorobovLattice ()
std::string toStringCoef () const
 Returns the multiplier \(a\) as a string.
void buildBasis (int d)
 Builds the basis in dimension \(d\).
void incDim ()
 Increments the dimension of the basis by 1.
void incDimSlow ()
 Increments the dimension of the basis by 1 by rebuilding the basis from scratch. More...
- 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 ()
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 ()
- Protected Member Functions inherited from LatCommon::IntLattice
void init ()
void kill ()
 Cleans and releases all the memory allocated for this lattice.

Protected Attributes

MScal m_a
 The multiplier of the Korobov lattice rule.
int m_shift
 The shift applied to the 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

This class implements lattice bases built from a Korobov lattice rule.

For a given \(a\), a Korobov lattice basis is formed as follows:

\[ \mathbf{b_1} = (1, a, a^2, \ldots, a^{d-1}),\quad \mathbf{b_2} = (0, n, 0, \ldots, 0),\quad \ldots,\quad \mathbf{b_d} = (0, \ldots, 0, n). \]

Pierre: Reprogrammer incDim de facon efficace comme dans MRGLattice

Constructor & Destructor Documentation

LatCommon::KorobovLattice::KorobovLattice ( const MScal &  n,
const MScal &  a,
int  dim,
int  t,
NormType  norm = L2NORM 


Same as above, except the lattice is formed as follow:

\[ \mathbf{b_1} = (a^t, a^{t+1}, a^{t+2}, \ldots, a^{t+d-1}),\qquad \mathbf{b_2} = (0, n, 0, \ldots, 0),\qquad \ldots,\qquad \mathbf{b_d} = (0, \ldots, 0, n). \]

Member Function Documentation

void LatCommon::KorobovLattice::incDimSlow ( )

Increments the dimension of the basis by 1 by rebuilding the basis from scratch.

This is very slow. It can be used for verification of the fast incDim method above.

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