FFT-based implementation of the inner product for a circulant sequence of vector with a single vector.
More...
|
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 InternalStorage & | internalStorage () const |
| Returns the internal storage configuration instance.
|
|
const RealVector & | kernelValues () 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...
|
|
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.
template<LatticeType LR, EmbeddingType ET, Compress COMPRESS, PerLevelOrder PLO>
template<class GENSEQ , class E >
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
-
genSeq | Sequence of generator values. |
vec | Second operand in the inner product. |