LatNet Builder Manual
2.0.1-11
Software Package for Constructing Highly Uniform Point Sets
|
This class implements a general rank 1 lattice basis. More...
#include <Rank1Lattice.h>
Inherits LatticeTester::IntLattice< Int, BasInt, Dbl, RedDbl >.
Public Member Functions | |
Rank1Lattice (const Int &n, const IntVec &a, int d, LatticeTester::NormType norm=LatticeTester::L2NORM) | |
Constructor. More... | |
Rank1Lattice (const Rank1Lattice< Int, BasInt, Dbl, RedDbl > &Lat) | |
Copy constructor. | |
Rank1Lattice & | operator= (const Rank1Lattice< Int, BasInt, Dbl, RedDbl > &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 | dualize () |
Dualize the matrix. More... | |
void | incDim () |
Increases the dimension by 1. | |
Public Member Functions inherited from LatticeTester::IntLattice< Int, BasInt, Dbl, RedDbl > | |
IntLattice (Int modulo, int k, int maxDim, NormType norm=L2NORM) | |
Constructor initializing the primal and the dual basis with the identity matrix. More... | |
IntLattice (const IntLattice< Int, BasInt, Dbl, RedDbl > &Lat) | |
Copy constructor that makes a copy of Lat . More... | |
void | copy (const IntLattice< Int, BasInt, Dbl, RedDbl > &lattice) |
Copies lattice into this object. More... | |
virtual | ~IntLattice () |
Destructor. | |
void | init () |
Allocates space to vectors used internally. More... | |
int | getOrder () const |
This is the order of the underlying MRG. More... | |
void | calcLgVolDual2 (double lgm2) |
Computes the logarithm of the normalization factor (m_lgVolDual2 ) in all dimensions \(\leq\) MaxDim for the lattice. More... | |
double | getLgVolDual2 (int i) const |
Gives the log of m^(2*i) if i < order, else gives the log of m^(2*i) | |
void | dualize () |
Exchange the primal basis and the dual basis. | |
void | fixLatticeNormalization (bool dualF) |
This function is called to fix the normalization constants to get the normalized merit from the shortest distance in the lattice. More... | |
void | buildProjection (IntLattice< Int, BasInt, Dbl, RedDbl > *lattice, const Coordinates &proj) |
Builds the basis (and dual basis) of the projection proj for this lattice. More... | |
LatticeTester::Normalizer< RedDbl > * | getNormalizer (NormaType norma, int alpha, bool dualF) |
Creates and returns the normalizer corresponding to criterion norma . More... | |
virtual void | setLac (const Lacunary< BasInt > &) |
Does nothing is this base class. | |
Public Member Functions inherited from LatticeTester::IntLatticeBasis< Int, BasInt, Dbl, RedDbl > | |
IntLatticeBasis (const int dim, NormType norm=L2NORM) | |
Constructor initializing the primal basis with the identity matrix. More... | |
IntLatticeBasis (const BasIntMat basis, const int dim, NormType norm=L2NORM) | |
Constructor taking all three needed component of an IntLatticeBasis. More... | |
IntLatticeBasis (const BasIntMat primalbasis, const BasIntMat dualbasis, const Int modulo, const int dim, NormType norm=L2NORM) | |
Complete constructor. More... | |
IntLatticeBasis (const IntLatticeBasis< Int, BasInt, Dbl, RedDbl > &Lat) | |
Copy constructor. More... | |
~IntLatticeBasis () | |
Destructor. | |
void | kill () |
Cleans and releases all the memory allocated to this lattice. | |
void | copyBasis (const IntLatticeBasis< Int, BasInt, Dbl, RedDbl > &lat) |
Copy the lattice lat , except it's NormType and dimension, into this object. More... | |
void | copyBasis (const IntLatticeBasis< Int, BasInt, Dbl, RedDbl > &lat, int n) |
Copy the n first elements of the basis of the lattice lat into this object. More... | |
void | initVecNorm () |
Initializes a vector containing the norms of the basis vectors to -1 at all components. | |
BasIntMat & | getBasis () |
Returns the basis represented in a matrix. | |
BasIntMat & | getDualBasis () |
Returns the dual basis represented in a matrix. | |
int | getDim () const |
Returns the dimension of the lattice. More... | |
NormType | getNorm () const |
Returns the NormType used by this lattice. | |
Dbl | getVecNorm (const int &i) |
Returns the norm of the i-th vector of the basis. | |
DblVec | getVecNorm () const |
Returns the norm of each vector of the basis in a vector. | |
Dbl | getDualVecNorm (const int &i) |
Returns the norm of the i-th vector of the dual basis. | |
DblVec | getDualVecNorm () const |
Returns the norm of each vector of the dual basis in a vector. | |
Int | getModulo () const |
Returns the m used for rescaling if it has been defined. More... | |
void | setDim (const int &d) |
Sets the dimension of the basis to d . More... | |
void | setNorm (const NormType &norm) |
Sets the NormType used by this lattice to norm . | |
void | setVecNorm (const Dbl &value, const int &i) |
Sets the norm of the i -th component of the basis to value . More... | |
void | setDualVecNorm (const Dbl &value, const int &i) |
Sets the norm of the i -th component of the dual basis to value . More... | |
bool | withDual () |
Returns true if a dual has been defined and false otherwise. | |
void | setDualFlag (bool flag) |
Sets the withDual flag to flag . More... | |
bool | getXX (int i) const |
Gets whether or not there is a component at the i -th position in the basis. More... | |
void | setXX (bool val, int i) |
Sets value at the i -th position in the array xx. | |
void | setNegativeNorm () |
Sets all the values in the array containing the norms of the basis vectors to -1. | |
void | setNegativeNorm (const int &i) |
Sets the value of the i -th component in the array containing the norms of the basis vectors to -1. | |
void | setDualNegativeNorm () |
Sets all the values in the array containing the norms of the dual basis vectors to -1. | |
void | setDualNegativeNorm (const int &i) |
Sets the value of the i -th component in the array containing the norms of the dual basis vectors to -1. | |
void | updateVecNorm () |
Updates the array containing the basis vectors norms by recomputing them. | |
void | updateVecNorm (const int &d) |
Updates the array containing the basis vectors norms from the d -th component to the last by recomputing them. | |
void | updateDualVecNorm () |
Updates the array containing the dual basis vectors norms by recomputing them. | |
void | updateDualVecNorm (const int &d) |
Updates the array containing the dual basis vectors norms from the d -th component to the last by recomputing them. | |
void | updateScalL2Norm (const int i) |
Updates the i -th value of the array containing the norms of the basis vectors by recomputing it using the L2NORM . | |
void | updateScalL2Norm (const int k1, const int k2) |
Updates the k1 -th to the k2-1 -th values of the array containing the norms of the basis vectors by recomputing them using the L2NORM . | |
void | updateDualScalL2Norm (const int i) |
Updates the i -th value of the array containing the norms of the dual basis vectors by recomputing it using the L2NORM . | |
void | updateDualScalL2Norm (const int k1, const int k2) |
Updates the k1 -th to the k2-1 -th values of the array containing the norms of the dual basis vectors by recomputing them using the L2NORM . | |
void | permute (int i, int j) |
Exchanges vectors i and j in the basis. More... | |
bool | checkDuality () |
Returns true if the dual basis contained in the object really is the dual of the basis, and false otherwise. More... | |
void | sort (int d) |
Sorts the basis vectors with indices greater of equal to \(d\) by increasing length. More... | |
std::string | toStringBasis () const |
Returns a string with the primal basis and its norms. | |
std::string | toStringDualBasis () const |
Returns a string with the dual basis and its norms. | |
void | write () const |
Writes the lattice and its parameters on standard output. More... | |
Protected Member Functions | |
void | init () |
Initializes the rank 1 lattice. | |
Protected Member Functions inherited from LatticeTester::IntLattice< Int, BasInt, Dbl, RedDbl > | |
virtual void | kill () |
The components of the lattice when it is built out of more than one component. More... | |
Protected Attributes | |
IntVec | m_a |
The multipliers of the rank 1 lattice rule. | |
Protected Attributes inherited from LatticeTester::IntLattice< Int, BasInt, Dbl, RedDbl > | |
int | m_order |
The order of the basis. | |
double * | m_lgVolDual2 |
Represente sur dual along the diagonal?? ERWAN. | |
double | m_lgm2 |
The logarithm \(\log_2 (m^2)\). | |
BasIntMat | m_wSI |
Use to save the dual basis and the basis in some works. | |
BasIntMat | m_vSI |
Int | m_t1 |
Working Variables use in MRGLattice.h. | |
Int | m_t2 |
Int | m_t3 |
Protected Attributes inherited from LatticeTester::IntLatticeBasis< Int, BasInt, Dbl, RedDbl > | |
BasIntMat | m_basis |
Each row of this matrix represents a vector in the basis of the lattice. | |
BasIntMat | m_dualbasis |
Each row of this matrix represents a vector in the dual basis of the lattice. | |
int | m_dim |
The dimension of the lattice. More... | |
NormType | m_norm |
The NormType used in the reduction and for this lattice. | |
DblVec | m_vecNorm |
The norm of each vector in the basis. | |
DblVec | m_dualvecNorm |
The norm of each vector in the dual basis. | |
Int | m_modulo |
The m used for rescaling the lattice. | |
bool | m_withDual |
If m_withDual is true a dual basis has been specified, otherwise it is false . | |
bool * | m_xx |
This table is used in the Minkowski reduction, but it's usage is quite obscure. | |
This class implements a general rank 1 lattice basis.
For the values \(a_1, a_2, …, a_d\) given, the \(d\)-dimensional lattice basis is formed as:
\[ \mathbf{b_1} = (a_1, a_2, …, a_d),\quad\mathbf{b_2} = (0, n, 0, …, 0),\quad…, \quad\mathbf{b_d} = (0, …, 0, n) \]
Without loss of generality, one may choose \(a_1 = 1\).
LatticeTester::Rank1Lattice< Int, BasInt, Dbl, RedDbl >::Rank1Lattice | ( | const Int & | n, |
const IntVec & | a, | ||
int | d, | ||
LatticeTester::NormType | norm = LatticeTester::L2NORM |
||
) |
Constructor.
\(d\) represents the number of multipliers in the array a
.
References LatticeTester::Rank1Lattice< Int, BasInt, Dbl, RedDbl >::init(), and LatticeTester::Rank1Lattice< Int, BasInt, Dbl, RedDbl >::m_a.
void LatticeTester::Rank1Lattice< Int, BasInt, Dbl, RedDbl >::dualize | ( | ) |
Dualize the matrix.
The matrix entered need to have the particular shape describe ERWAN