Lattice Builder Manual
Software Package for Constructing Rank-1 Lattices
|
#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 |
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}\).