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

Go to the source code of this file.

Classes

class  vsmc::internal::PhiloxBumpKey< T, K, N, Constants, bool >
 
class  vsmc::internal::PhiloxBumpKey< T, 2, N, Constants, true >
 
class  vsmc::internal::PhiloxBumpKey< T, 4, N, Constants, true >
 
class  vsmc::internal::PhiloxHiLo< T, int >
 
class  vsmc::internal::PhiloxHiLo< T, 32 >
 
class  vsmc::internal::PhiloxHiLo< T, 64 >
 
class  vsmc::internal::PhiloxInitPar< T, K, Constants >
 
class  vsmc::internal::PhiloxMulConstant< T, size_t, size_t, int >
 
class  vsmc::internal::PhiloxMulConstant< T, 2, 0, 32 >
 
class  vsmc::internal::PhiloxMulConstant< T, 2, 0, 64 >
 
class  vsmc::internal::PhiloxMulConstant< T, 4, 0, 32 >
 
class  vsmc::internal::PhiloxMulConstant< T, 4, 0, 64 >
 
class  vsmc::internal::PhiloxMulConstant< T, 4, 1, 32 >
 
class  vsmc::internal::PhiloxMulConstant< T, 4, 1, 64 >
 
class  vsmc::internal::PhiloxPBox< T, K, N, bool >
 
class  vsmc::internal::PhiloxPBox< T, 2, N, true >
 
class  vsmc::internal::PhiloxPBox< T, 4, N, true >
 
class  vsmc::internal::PhiloxPBox< T, 8, N, true >
 
class  vsmc::internal::PhiloxPBox< T, K, N, true >
 
class  vsmc::internal::PhiloxSBox< T, K, N, typename, bool >
 
class  vsmc::internal::PhiloxSBox< T, K, N, Constants, true >
 
class  vsmc::internal::PhiloxWeylConstant< T, size_t, int >
 
class  vsmc::internal::PhiloxWeylConstant< T, 0, 32 >
 
class  vsmc::internal::PhiloxWeylConstant< T, 0, 64 >
 
class  vsmc::internal::PhiloxWeylConstant< T, 1, 32 >
 
class  vsmc::internal::PhiloxWeylConstant< T, 1, 64 >
 
class  vsmc::PhiloxConstants< T, K >
 Default Philox constants. More...
 
class  vsmc::PhiloxGenerator< T, K, Rounds, Constants >
 Philox RNG generator. More...
 

Namespaces

 vsmc
 
 vsmc::internal
 

Macros

#define VSMC_DEFINE_RNG_PHILOX_MUL_CONSTANT(W, K, I, val)
 
#define VSMC_DEFINE_RNG_PHILOX_WEYL_CONSTANT(W, K, val)
 
#define VSMC_RNG_PHILOX_ROUNDS   10
 PhiloxGenerator default rounds. More...
 
#define VSMC_RNG_PHILOX_VECTOR_LENGTH   4
 PhiloxGenerator default vector length. More...
 

Typedefs

using vsmc::Philox = Philox4x64Engine< std::uint32_t >
 The default 32-bit Philox engine. More...
 
using vsmc::Philox2x32 = Philox2x32Engine< std::uint32_t >
 Philox2x32 RNG engine with 32-bit integer output. More...
 
using vsmc::Philox2x32_64 = Philox2x32Engine< std::uint64_t >
 Philox2x32 RNG engine with 64-bit integer output. More...
 
template<typename ResultType >
using vsmc::Philox2x32Engine = PhiloxEngine< ResultType, std::uint32_t, 2 >
 Philox2x32 RNG engine. More...
 
using vsmc::Philox2x64 = Philox2x64Engine< std::uint32_t >
 Philox2x64 RNG engine with 32-bit integer output. More...
 
using vsmc::Philox2x64_64 = Philox2x64Engine< std::uint64_t >
 Philox2x64 RNG engine with 64-bit integer output. More...
 
template<typename ResultType >
using vsmc::Philox2x64Engine = PhiloxEngine< ResultType, std::uint64_t, 2 >
 Philox2x64 RNG engine. More...
 
using vsmc::Philox4x32 = Philox4x32Engine< std::uint32_t >
 Philox4x32 RNG engine with 32-bit integer output. More...
 
using vsmc::Philox4x32_64 = Philox4x32Engine< std::uint64_t >
 Philox4x32 RNG engine with 64-bit integer output. More...
 
template<typename ResultType >
using vsmc::Philox4x32Engine = PhiloxEngine< ResultType, std::uint32_t, 4 >
 Philox4x32 RNG engine. More...
 
using vsmc::Philox4x64 = Philox4x64Engine< std::uint32_t >
 Philox4x64 RNG engine with 32-bit integer output. More...
 
using vsmc::Philox4x64_64 = Philox4x64Engine< std::uint64_t >
 Philox4x64 RNG engine with 64-bit integer output. More...
 
template<typename ResultType >
using vsmc::Philox4x64Engine = PhiloxEngine< ResultType, std::uint64_t, 4 >
 Philox4x64 RNG engine. More...
 
using vsmc::Philox_64 = Philox4x64Engine< std::uint64_t >
 The default 64-bit Philox engine. More...
 
template<typename ResultType , typename T = ResultType, std::size_t K = 4, std::size_t Rounds = 10, typename Constants = PhiloxConstants<T, K>>
using vsmc::PhiloxEngine = CounterEngine< ResultType, PhiloxGenerator< T, K, Rounds, Constants >>
 Philox RNG engine. More...
 

Macro Definition Documentation

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

Definition at line 50 of file philox.hpp.

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

Definition at line 43 of file philox.hpp.