Lattice Builder Manual Software Package for Constructing Rank-1 Lattices

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files
- Examples

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Modules Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
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...
IntLattice & | operator= (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.
Normalizer * | getNormalizer (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.
Base & | getPrimalBasis ()
| Returns the primal basis `V`.
Base & | getDualBasis ()
| 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:

- latcommon/include/latcommon/IntLattice.h