LatNet Builder Manual  2.0.1-11
Software Package for Constructing Highly Uniform Point Sets
LatticeTester::NormaMinkL1< RedDbl > Class Template Reference

This class implements theoretical bounds on the length of the shortest nonzero vector in a lattice, based on the densest sphere packing in space. More...

#include <NormaMinkL1.h>

Inherits LatticeTester::Normalizer< RedDbl >.

Public Member Functions

 NormaMinkL1 (RedDbl &logDensity, int t, double beta=1)
 Constructor for the Marsaglia’s bounds with the \({\mathcal{L}}_1\) norm. More...
 
 ~NormaMinkL1 ()
 Destructor.
 
double getGamma (int j) const
 Returns the value of the lattice constant \(\gamma_j\) in dimension \(j\).
 
- Public Member Functions inherited from LatticeTester::Normalizer< RedDbl >
 Normalizer (RedDbl &logDensity, int t, std::string Name, NormType norm=L2NORM, double beta=1)
 Constructor for the bounds. More...
 
 Normalizer (int t, std::string Name, NormType norm=L2NORM, double beta=1)
 Constructor only used by the NormaPalpha class. More...
 
virtual ~Normalizer ()
 Destructor.
 
virtual void init (RedDbl &logDensity, double beta)
 Initializes the bounds on the length of the shortest vector. More...
 
std::string ToString () const
 Returns this object as a string.
 
NormType getNorm () const
 Returns the norm associated with this object.
 
void setLogDensity (RedDbl logDensity)
 Sets the log-density associated with this object to logDensity.
 
RedDbl getLogDensity () const
 Returns the logDensity associated with this object.
 
void setNorm (NormType norm)
 Sets the norm associated with this object to norm.
 
int getDim () const
 Returns the maximal dimension for this object.
 
double getPreComputedBound (int j) const
 Returns the bound on the length of the shortest nonzero vector in dimension \(j\) as computed in Normalizer::init.
 
double getBound (int j) const
 Calculates and returns the bound on the length of the shortest nonzero vector in dimension \(j\).
 

Additional Inherited Members

- Static Public Attributes inherited from LatticeTester::Normalizer< RedDbl >
static const int MAX_DIM = 48
 
- Protected Attributes inherited from LatticeTester::Normalizer< RedDbl >
std::string m_name
 Name of the normalizer.
 
NormType m_norm
 Norm associated with this object.
 
RedDbl m_logDensity
 log of the density, ie log of the number of points of the lattice per unit of volume.
 
int m_maxDim
 Only elements 1 to m_maxDim (inclusive) of arrays are defined.
 
double m_beta
 Beta factor.
 
double * m_bounds
 Contains the bounds on the length of the shortest nonzero vector in the lattice in each dimension.
 

Detailed Description

template<typename RedDbl>
class LatticeTester::NormaMinkL1< RedDbl >

This class implements theoretical bounds on the length of the shortest nonzero vector in a lattice, based on the densest sphere packing in space.

The length of vectors is computed using the \({\mathcal{L}}_1\) norm. Here, the length of the shortest nonzero vector gives the minimal number of hyperplanes that cover all the points of the dual lattice aasociated. The following upper bound in this case was established by Marsaglia [23]  by applying the general convex body theorem of Minkowski:

\[ \ell_t^* = (t!)^{1/t}*(n)^{-1/t}) = \gamma_t^{1/2} n^{-1/t}, \]

for a lattice containing \(n\) points per unit volume, in dimension \(t\). The lattice constants are thus \(\gamma_t = (t!)^{2/t}\).

Constructor & Destructor Documentation

◆ NormaMinkL1()

template<typename RedDbl >
LatticeTester::NormaMinkL1< RedDbl >::NormaMinkL1 ( RedDbl &  logDensity,
int  t,
double  beta = 1 
)

Constructor for the Marsaglia’s bounds with the \({\mathcal{L}}_1\) norm.

The lattice has \(n\) points per unit volume, in all dimensions \(\le t\). The bias factor beta \(= \beta\) gives more weight to some of the dimensions. Restriction: \(t \le48\).

References LatticeTester::Normalizer< RedDbl >::init().


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