vSMC  v3.0.0
Scalable Monte Carlo
Classes | Namespaces | Macros | Typedefs
threefry.hpp File Reference
#include <vsmc/rng/internal/common.hpp>
#include <vsmc/rng/counter.hpp>

Go to the source code of this file.

Classes

class  vsmc::internal::ThreefryInsertKey< T, K, N, bool >
 
class  vsmc::internal::ThreefryInsertKey< T, K, N, true >
 
class  vsmc::internal::ThreefryParityConstant< T, int >
 
class  vsmc::internal::ThreefryParityConstant< T, 32 >
 
class  vsmc::internal::ThreefryParityConstant< T, 64 >
 
class  vsmc::internal::ThreefryPBox< T, K, N, bool >
 
class  vsmc::internal::ThreefryPBox< T, 2, N, true >
 
class  vsmc::internal::ThreefryPBox< T, 4, N, true >
 
class  vsmc::internal::ThreefryPBox< T, 8, N, true >
 
class  vsmc::internal::ThreefryPBox< T, K, N, true >
 
class  vsmc::internal::ThreefryPermuteConstant< size_t, size_t >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 0 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 1 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 10 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 11 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 12 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 13 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 14 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 15 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 2 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 3 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 4 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 5 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 6 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 7 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 8 >
 
class  vsmc::internal::ThreefryPermuteConstant< 16, 9 >
 
class  vsmc::internal::ThreefryPermuteConstant< 2, 0 >
 
class  vsmc::internal::ThreefryPermuteConstant< 2, 1 >
 
class  vsmc::internal::ThreefryPermuteConstant< 4, 0 >
 
class  vsmc::internal::ThreefryPermuteConstant< 4, 1 >
 
class  vsmc::internal::ThreefryPermuteConstant< 4, 2 >
 
class  vsmc::internal::ThreefryPermuteConstant< 4, 3 >
 
class  vsmc::internal::ThreefryPermuteConstant< 8, 0 >
 
class  vsmc::internal::ThreefryPermuteConstant< 8, 1 >
 
class  vsmc::internal::ThreefryPermuteConstant< 8, 2 >
 
class  vsmc::internal::ThreefryPermuteConstant< 8, 3 >
 
class  vsmc::internal::ThreefryPermuteConstant< 8, 4 >
 
class  vsmc::internal::ThreefryPermuteConstant< 8, 5 >
 
class  vsmc::internal::ThreefryPermuteConstant< 8, 6 >
 
class  vsmc::internal::ThreefryPermuteConstant< 8, 7 >
 
class  vsmc::internal::ThreefryRotateConstant< T, size_t, size_t, size_t, int >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 0, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 0, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 0, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 0, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 0, 4, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 0, 5, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 0, 6, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 0, 7, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 1, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 1, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 1, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 1, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 1, 4, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 1, 5, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 1, 6, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 1, 7, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 2, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 2, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 2, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 2, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 2, 4, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 2, 5, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 2, 6, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 2, 7, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 3, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 3, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 3, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 3, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 3, 4, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 3, 5, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 3, 6, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 3, 7, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 4, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 4, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 4, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 4, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 4, 4, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 4, 5, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 4, 6, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 4, 7, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 5, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 5, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 5, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 5, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 5, 4, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 5, 5, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 5, 6, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 5, 7, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 6, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 6, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 6, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 6, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 6, 4, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 6, 5, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 6, 6, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 6, 7, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 7, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 7, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 7, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 7, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 7, 4, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 7, 5, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 7, 6, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 16, 7, 7, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 0, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 0, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 1, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 1, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 2, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 2, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 3, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 3, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 4, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 4, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 5, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 5, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 6, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 6, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 7, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 2, 7, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 0, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 0, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 0, 1, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 0, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 1, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 1, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 1, 1, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 1, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 2, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 2, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 2, 1, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 2, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 3, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 3, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 3, 1, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 3, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 4, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 4, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 4, 1, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 4, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 5, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 5, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 5, 1, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 5, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 6, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 6, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 6, 1, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 6, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 7, 0, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 7, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 7, 1, 32 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 4, 7, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 0, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 0, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 0, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 0, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 1, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 1, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 1, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 1, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 2, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 2, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 2, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 2, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 3, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 3, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 3, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 3, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 4, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 4, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 4, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 4, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 5, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 5, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 5, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 5, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 6, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 6, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 6, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 6, 3, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 7, 0, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 7, 1, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 7, 2, 64 >
 
class  vsmc::internal::ThreefryRotateConstant< T, 8, 7, 3, 64 >
 
class  vsmc::internal::ThreefrySBox< T, K, N, typename, bool >
 
class  vsmc::internal::ThreefrySBox< T, K, N, Constants, true >
 
class  vsmc::ThreefryConstants< T, K >
 Default Threefry constants. More...
 
class  vsmc::ThreefryGenerator< T, K, Rounds, Constants >
 Threefry RNG generator. More...
 

Namespaces

 vsmc
 
 vsmc::internal
 

Macros

#define VSMC_DEFINE_RNG_THREEFRY_PARITY_CONSTANT(W, val)
 
#define VSMC_DEFINE_RNG_THREEFRY_PERMUTE_CONSTANT(K, I, val)
 
#define VSMC_DEFINE_RNG_THREEFRY_ROTATE_CONSTANT(W, K, N, I, val)
 
#define VSMC_RNG_THREEFRY_ROUNDS   20
 ThreefryGenerator default rounds. More...
 
#define VSMC_RNG_THREEFRY_VECTOR_LENGTH   4
 ThreefryGenerator default vector length. More...
 

Typedefs

using vsmc::Threefry = Threefry4x64Engine< std::uint32_t >
 The default 32-bit Threefry engine. More...
 
using vsmc::Threefry16x64 = Threefry16x64Engine< std::uint32_t >
 Threefry16x64 RNG engine with 32-bit integer output. More...
 
using vsmc::Threefry16x64_64 = Threefry16x64Engine< std::uint64_t >
 Threefry16x64 RNG engine with 64-bit integer output. More...
 
template<typename ResultType >
using vsmc::Threefry16x64Engine = ThreefryEngine< ResultType, std::uint64_t, 16 >
 Threefry16x64 RNG engine. More...
 
using vsmc::Threefry2x32 = Threefry2x32Engine< std::uint32_t >
 Threefry2x32 RNG engine with 32-bit integer output. More...
 
using vsmc::Threefry2x32_64 = Threefry2x32Engine< std::uint64_t >
 Threefry2x32 RNG engine with 64-bit integer output. More...
 
template<typename ResultType >
using vsmc::Threefry2x32Engine = ThreefryEngine< ResultType, std::uint32_t, 2 >
 Threefry2x32 RNG engine. More...
 
using vsmc::Threefry2x64 = Threefry2x64Engine< std::uint32_t >
 Threefry2x64 RNG engine with 32-bit integer output. More...
 
using vsmc::Threefry2x64_64 = Threefry2x64Engine< std::uint64_t >
 Threefry2x64 RNG engine with 64-bit integer output. More...
 
template<typename ResultType >
using vsmc::Threefry2x64Engine = ThreefryEngine< ResultType, std::uint64_t, 2 >
 Threefry2x64 RNG engine. More...
 
using vsmc::Threefry4x32 = Threefry4x32Engine< std::uint32_t >
 Threefry4x32 RNG engine with 32-bit integer output. More...
 
using vsmc::Threefry4x32_64 = Threefry4x32Engine< std::uint64_t >
 Threefry4x32 RNG engine with 64-bit integer output. More...
 
template<typename ResultType >
using vsmc::Threefry4x32Engine = ThreefryEngine< ResultType, std::uint32_t, 4 >
 Threefry4x32 RNG engine. More...
 
using vsmc::Threefry4x64 = Threefry4x64Engine< std::uint32_t >
 Threefry4x64 RNG engine with 32-bit integer output. More...
 
using vsmc::Threefry4x64_64 = Threefry4x64Engine< std::uint64_t >
 Threefry4x64 RNG engine with 64-bit integer output. More...
 
template<typename ResultType >
using vsmc::Threefry4x64Engine = ThreefryEngine< ResultType, std::uint64_t, 4 >
 Threefry4x64 RNG engine. More...
 
using vsmc::Threefry8x64 = Threefry8x64Engine< std::uint32_t >
 Threefry8x64 RNG engine with 32-bit integer output. More...
 
using vsmc::Threefry8x64_64 = Threefry8x64Engine< std::uint64_t >
 Threefry8x64 RNG engine with 64-bit integer output. More...
 
template<typename ResultType >
using vsmc::Threefry8x64Engine = ThreefryEngine< ResultType, std::uint64_t, 8 >
 Threefry8x64 RNG engine. More...
 
using vsmc::Threefry_64 = Threefry4x64Engine< std::uint64_t >
 The default 64-bit Threefry engine. More...
 
template<typename ResultType , typename T = ResultType, std::size_t K = 4, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
using vsmc::ThreefryEngine = CounterEngine< ResultType, ThreefryGenerator< T, K, Rounds, Constants >>
 Threefry RNG engine. More...
 

Macro Definition Documentation

#define VSMC_DEFINE_RNG_THREEFRY_PARITY_CONSTANT (   W,
  val 
)
Value:
template <typename T> \
class ThreefryParityConstant<T, W> \
: public std::integral_constant<T, UINT##W##_C(val)> \
{ \
};

Definition at line 38 of file threefry.hpp.

#define VSMC_DEFINE_RNG_THREEFRY_PERMUTE_CONSTANT (   K,
  I,
  val 
)
Value:
template <> \
class ThreefryPermuteConstant<K, I> \
: public std::integral_constant<std::size_t, val> \
{ \
};

Definition at line 52 of file threefry.hpp.

#define VSMC_DEFINE_RNG_THREEFRY_ROTATE_CONSTANT (   W,
  K,
  N,
  I,
  val 
)
Value:
template <typename T> \
class ThreefryRotateConstant<T, K, N, I, W> \
: public std::integral_constant<int, val> \
{ \
};

Definition at line 45 of file threefry.hpp.