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

FFT-based implementation of the inner product for a circulant sequence of vector with a single vector. More...

#include <CoordUniformInnerProdFast.h>

Classes

class  Seq
 Sequence of inner product values. More...
 

Public Types

typedef Storage< LR, EmbeddingType::MULTILEVEL, COMPRESS, PerLevelOrder::CYCLIC > InternalStorage
 
typedef CoordUniformStateList< LR, EmbeddingType::MULTILEVEL, COMPRESS, PerLevelOrder::CYCLIC > StateList
 
typedef Storage< LR, ET, COMPRESS >::MeritValue MeritValue
 

Public Member Functions

template<class K >
 CoordUniformInnerProdFast (Storage< LR, ET, COMPRESS, PLO > storage, const Kernel::Base< K > &kernel)
 Constructor. More...
 
const Storage< LR, ET, COMPRESS, PLO > & storage () const
 Returns the storage configuration instance.
 
const InternalStorageinternalStorage () const
 Returns the internal storage configuration instance.
 
const RealVectorkernelValues () const
 Returns the vector of kernel values.
 
const std::vector< boost::numeric::ublas::range > & levelRanges () const
 Returns the vector of per-level ranges of indices.
 
const std::vector< FFTComplexVector > & circulantFFT () const
 Returns the FFT's of the first column of each circulant submatrix in the horizontal block-circulant matrix.
 
template<class GENSEQ , class E >
Seq< GENSEQ > prodSeq (const GENSEQ &genSeq, const boost::numeric::ublas::vector_expression< E > &vec) const
 Creates a new sequence of inner product values by applying a stride permutation based on genSeq to the vector of kernel values, then by computing the inner product with vec. More...
 

Protected Types

typedef fftw< Real >::real_vector FFTRealVector
 
typedef fftw< Real >::complex_vector FFTComplexVector
 

Detailed Description

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

FFT-based implementation of the inner product for a circulant sequence of vector with a single vector.

Implemented for integer powers of prime bases, as proposed in [4] .

Computes the inner product with a second vector for all vectors in the sequence at once.

Constructor & Destructor Documentation

◆ CoordUniformInnerProdFast()

template<LatticeType LR, EmbeddingType ET, Compress COMPRESS, PerLevelOrder PLO>
template<class K >
LatBuilder::MeritSeq::CoordUniformInnerProdFast< LR, ET, COMPRESS, PLO >::CoordUniformInnerProdFast ( Storage< LR, ET, COMPRESS, PLO >  storage,
const Kernel::Base< K > &  kernel 
)
inline

Constructor.

Parameters
storageStorage configuration.
kernelKernel. Used to create a sequence of permuatations of the kernel values evaluated at every one-dimensional lattice point.

Member Function Documentation

◆ prodSeq()

template<LatticeType LR, EmbeddingType ET, Compress COMPRESS, PerLevelOrder PLO>
template<class GENSEQ , class E >
Seq<GENSEQ> LatBuilder::MeritSeq::CoordUniformInnerProdFast< LR, ET, COMPRESS, PLO >::prodSeq ( const GENSEQ &  genSeq,
const boost::numeric::ublas::vector_expression< E > &  vec 
) const
inline

Creates a new sequence of inner product values by applying a stride permutation based on genSeq to the vector of kernel values, then by computing the inner product with vec.

Parameters
genSeqSequence of generator values.
vecSecond operand in the inner product.

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