|
LatNet Builder Manual 2.1.3-6
Software Package for Constructing Highly Uniform Point Sets
|
This class implements theoretical bounds on the values of \(P_{\alpha}\) for a lattice (see class Palpha). More...
#include <NormaPalpha.h>
Inherits LatticeTester::Normalizer< RedDbl >.
Public Member Functions | |
| NormaPalpha (const Int &m, int alpha, int s, NormType norm=L2NORM) | |
| Constructor for the bounds \(B_{\alpha}(s)\) obtained for lattices, in all dimensions \(\le s\), where \(\alpha= {}\)alpha. | |
| double | calcBound (int alpha, int s) |
| Computes and returns the bound \(B_{\alpha}(s)\) given in [31] (p. | |
| void | init (int alpha) |
| Initializes the bounds for the Palpha normalization. | |
| int | getAlpha () const |
| Returns the value of \(\alpha\). | |
| Public Member Functions inherited from LatticeTester::Normalizer< RedDbl > | |
| Normalizer (RedDbl &logDensity, int t, std::string Name, NormType norm=L2NORM, double beta=1) | |
| Complete constructor for a Normalizer. | |
| Normalizer (int t, std::string Name, NormType norm=L2NORM, double beta=1) | |
| Constructor that does not take the density as an argument. | |
| virtual | ~Normalizer () |
| Destructor. | |
| virtual void | init (RedDbl &logDensity, double beta) |
| This is a method that will initialize the bounds this normalizer can return. | |
| std::string | ToString () const |
| Returns a string that describes this object. | |
| 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 for dimension j as computed in Normalizer::init(). | |
| virtual RedDbl | getBound (int j) const |
| Calculates and returns the bound on the length of the shortest nonzero vector in dimension j. | |
| virtual double | getGamma (int j) const |
| Returns the value of a lattice constant \(\gamma\) in dimension \(j\). | |
Additional Inherited Members | |
| Static Public Attributes inherited from LatticeTester::Normalizer< RedDbl > | |
| static const int | MAX_DIM = 48 |
| The maximum dimension of the lattices for which this class can give an upper bound. | |
| 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 m_bounds bellow will be pre-computed. | |
| double | m_beta |
| Beta factor used to give more or less importance to some of the dimensions. | |
| double * | m_bounds |
| Contains the bounds on the length of the shortest nonzero vector in the lattice in each dimension. | |
This class implements theoretical bounds on the values of \(P_{\alpha}\) for a lattice (see class Palpha).
| LatticeTester::NormaPalpha< Int, RedDbl >::NormaPalpha | ( | const Int & | m, |
| int | alpha, | ||
| int | s, | ||
| NormType | norm = L2NORM ) |
Constructor for the bounds \(B_{\alpha}(s)\) obtained for lattices, in all dimensions \(\le s\), where \(\alpha= {}\)alpha.
The lattices have rank \(1\), with \(m\) points per unit volume. Restriction: \(2 \le s \le48\), \(\alpha\ge2\), and \(m\) prime.
References LatticeTester::Normalizer< RedDbl >::MAX_DIM, and LatticeTester::Normalizer< RedDbl >::Normalizer().
| double LatticeTester::NormaPalpha< Int, RedDbl >::calcBound | ( | int | alpha, |
| int | s ) |
Computes and returns the bound \(B_{\alpha}(s)\) given in [31] (p.
83, Theorem 4.4). Given \(s > 1\), \(\alpha> 1\), \(m\) prime, and \(m > e^{\alpha s/(\alpha-1)}\), then there exists an integer vector \(\mathbf{a} \in\mathbb Z^s\) such that
\[ P_{\alpha}(s, \mathbf{a}) \le B_{\alpha}(s) = \frac{e}{s}^{\alpha s} \frac{(2\ln m + s)^{\alpha s}}{m^{\alpha}}. \]
If the conditions for the existence of the bound are not satisfied, the function returns \(-1\).
References NTL::conv(), and LatticeTester::IntFactor< Int >::isPrime().
Referenced by init().