LatNet Builder Manual  2.0.1-11
Software Package for Constructing Highly Uniform Point Sets
LatBuilder::MeritSeq::ConcreteCoordUniformState< LR, ET, COMPRESS, PLO, WEIGHTS > Class Template Reference

Default implementation of CoordUniformState that works with any implementation of LatticeTester::Weights. More...

#include <ConcreteCoordUniformState.h>

Inherits LatBuilder::MeritSeq::CoordUniformState< LR, ET, COMPRESS, PLO >.

Public Member Functions

 ConcreteCoordUniformState (Storage< LR, ET, COMPRESS, PLO > storage, const WEIGHTS &weights)
 Constructor. More...
 
void reset ()
 Resets the state to dimension 0 with new specified storage configuration.
 
void update (const RealVector &kernelValues, typename LatticeTraits< LR >::GenValue gen)
 Updates the current state using the specified row of the permuted matrix
of kernel values. More...
 
RealVector weightedState () const
 Computes and returns the weighted state vector \(\boldsymbol q_s\). More...
 
std::unique_ptr< CoordUniformState< LR, ET, COMPRESS, PLO > > clone () const
 Returns a copy of this instance.
 
- Public Member Functions inherited from LatBuilder::MeritSeq::CoordUniformState< LR, ET, COMPRESS, PLO >
 CoordUniformState (Storage< LR, ET, COMPRESS, PLO > storage)
 
const Storage< LR, ET, COMPRESS, PLO > & storage () const
 Returns a pointer to the storage configuration.
 
Dimension dimension () const
 Returns the value of the internal dimension counter.
 

Detailed Description

template<LatticeType LR, EmbeddingType ET, Compress COMPRESS, PerLevelOrder PLO, class WEIGHTS>
class LatBuilder::MeritSeq::ConcreteCoordUniformState< LR, ET, COMPRESS, PLO, WEIGHTS >

Default implementation of CoordUniformState that works with any implementation of LatticeTester::Weights.

Define

\[ \boldsymbol p_{\mathfrak u} = \left( \prod_{j \in \mathfrak u} \; \omega(x_{0,j}), \dots, \prod_{j \in \mathfrak u} \; \omega(x_{n-1,j}) \right) \quad (\forall \mathfrak u \subseteq \{1,\dots,s\}) \]

for \(s \geq 1\). Then, for \(s \geq 1\), we have

\[ \mathcal D_s^2 = \mathcal D_{s-1}^2 + \frac1n \boldsymbol\omega_s \cdot \sum_{\mathfrak u \subseteq \{1,\dots,s-1\}} \gamma_{\mathfrak u \cup \{s\}} \, \boldsymbol p_{\mathfrak u} \]

and

\[ \boldsymbol p_{\mathfrak u \cup \{s\}} = \boldsymbol\omega_s \odot \boldsymbol p_{\mathfrak u} \quad (\forall \mathfrak u \subseteq \{1,\dots,s-1\}), \]

where \(\cdot\) and \(\odot\) denote the scalar and the element-by-element product, respectively. For \(s=0\) and \(\mathfrak u = \emptyset\), we artificially define \(\mathcal D_0^2 = 0\) and \(\boldsymbol p_{\emptyset} = \boldsymbol 1\).

See CoordUniformCBC for the definition of \(\boldsymbol \omega_s\).

Constructor & Destructor Documentation

◆ ConcreteCoordUniformState()

Member Function Documentation

◆ update()

template<LatticeType LR, EmbeddingType ET, Compress COMPRESS, PerLevelOrder PLO, class WEIGHTS >
void LatBuilder::MeritSeq::ConcreteCoordUniformState< LR, ET, COMPRESS, PLO, WEIGHTS >::update ( const RealVector kernelValues,
typename LatticeTraits< LR >::GenValue  gen 
)
inlinevirtual

Updates the current state using the specified row of the permuted matrix
of kernel values.

For lattices, this corresponds to appending a component \(a_j\) to the generating
vector \(\boldsymbol a = (a_1, \dots, a_{j-1})\).
To each possible value of \(a_j\) corresponds a distinct row of the
matrix \(\boldsymbol\Omega\) of kernel values.
This increases the internal dimension counter.

Computes

\[ \boldsymbol p_{\mathfrak u \cup \{s\}} = \boldsymbol\omega_s \odot \boldsymbol p_{\mathfrak u} \quad (\forall \mathfrak u \subseteq \{1,\dots,s-1\}). \]

Reimplemented from LatBuilder::MeritSeq::CoordUniformState< LR, ET, COMPRESS, PLO >.

References LatBuilder::MeritSeq::CoordUniformState< LR, ET, COMPRESS, PLO >::dimension(), LatBuilder::MeritSeq::CoordUniformState< LR, ET, COMPRESS, PLO >::storage(), and LatBuilder::MeritSeq::CoordUniformState< LR, ET, COMPRESS, PLO >::update().

◆ weightedState()

template<LatticeType LR, EmbeddingType ET, Compress COMPRESS, PerLevelOrder PLO, class WEIGHTS >
RealVector LatBuilder::MeritSeq::ConcreteCoordUniformState< LR, ET, COMPRESS, PLO, WEIGHTS >::weightedState ( ) const
inlinevirtual

Computes and returns the weighted state vector \(\boldsymbol q_s\).

Computes

\[ \boldsymbol q_s = \sum_{\mathfrak u \subseteq \{1,\dots,s\}} \gamma_{\mathfrak u \cup \{s+1\}} \, \boldsymbol p_{\mathfrak u}. \]

Implements LatBuilder::MeritSeq::CoordUniformState< LR, ET, COMPRESS, PLO >.

References LatBuilder::MeritSeq::CoordUniformState< LR, ET, COMPRESS, PLO >::dimension(), and LatBuilder::MeritSeq::CoordUniformState< LR, ET, COMPRESS, PLO >::storage().


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