Lattice Builder Manual
Software Package for Constructing Rank-1 Lattices
LatBuilder::StorageTraits< Storage< LatType::EMBEDDED, COMPRESS > >::Stride Class Reference

Stride permutation. More...

#include <Storage-EMBEDDED.h>

Public Types

typedef StorageTraits::size_type size_type
 

Public Member Functions

 Stride (Storage< LatType::EMBEDDED, COMPRESS > storage, size_type stride)
 
size_type operator() (size_type i) const
 
size_type size () const
 

Detailed Description

template<Compress COMPRESS>
class LatBuilder::StorageTraits< Storage< LatType::EMBEDDED, COMPRESS > >::Stride

Stride permutation.

The elements on each level are visited by jumping across a certain number of elements (the stride length) periodically.

Consider the unpermuted vector \(\boldsymbol v = (v_1, \dots, v_n)\) for some positive integer \(n\). The \(j\)-th component of the vector with stride length \(a\) has value \(v_{j a \bmod n}\).

The stride length \(a\) can be identified to the \(i\)-th element \(g_i\) of the cyclic group \(\{ g_1, \dots, g_p \}\) integers modulo \(n\), with \(g_1 = 1\).

In the multilevel case, we can define a series of per-level vectors that regroup the elements of vector \(\boldsymbol v\) corresponding to distinct levels.

Each per-level vector can be seen a distinct row of an horizontal matrix composed of (square) circulant blocks. A \(n \times n\) circulant matrix \(\boldsymbol C\) with elements \(C_{i,j}\) is completely defined in terms of its first column \(\boldsymbol c = (c_1,\dots,c_s)\), as \(C_{i,j} = c_{(i - j) \bmod n + 1}\).

Reference: http://en.wikipedia.org/wiki/Circulant_matrix


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