vSMC
vSMC: Scalable Monte Carlo
Classes | Namespaces | Macros | Typedefs | Functions
philox.hpp File Reference
#include <vsmc/rng/internal/common.hpp>

Go to the source code of this file.

Classes

struct  vsmc::internal::PhiloxBumpKey< ResultType, K, N, bool >
 
struct  vsmc::internal::PhiloxBumpKey< ResultType, 2, N, true >
 
struct  vsmc::internal::PhiloxBumpKey< ResultType, 4, N, true >
 
struct  vsmc::internal::PhiloxRound< ResultType, K, N, bool >
 
struct  vsmc::internal::PhiloxRound< ResultType, 2, N, true >
 
struct  vsmc::internal::PhiloxRound< ResultType, 4, N, true >
 
class  vsmc::PhiloxEngine< ResultType, K, Rounds >
 Philox RNG engine reimplemented. More...
 
struct  vsmc::traits::internal::PhiloxRoundConstantValue< typename, size_t, size_t >
 
struct  vsmc::traits::internal::PhiloxRoundConstantValue< uint32_t, 2, 0 >
 
struct  vsmc::traits::internal::PhiloxRoundConstantValue< uint32_t, 4, 0 >
 
struct  vsmc::traits::internal::PhiloxRoundConstantValue< uint32_t, 4, 1 >
 
struct  vsmc::traits::internal::PhiloxRoundConstantValue< uint64_t, 2, 0 >
 
struct  vsmc::traits::internal::PhiloxRoundConstantValue< uint64_t, 4, 0 >
 
struct  vsmc::traits::internal::PhiloxRoundConstantValue< uint64_t, 4, 1 >
 
struct  vsmc::traits::internal::PhiloxWeylConstantValue< typename, size_t >
 
struct  vsmc::traits::internal::PhiloxWeylConstantValue< uint32_t, 0 >
 
struct  vsmc::traits::internal::PhiloxWeylConstantValue< uint32_t, 1 >
 
struct  vsmc::traits::internal::PhiloxWeylConstantValue< uint64_t, 0 >
 
struct  vsmc::traits::internal::PhiloxWeylConstantValue< uint64_t, 1 >
 
struct  vsmc::traits::PhiloxRoundConstantTrait< ResultType, K, I >
 Traits of PhiloxEngine constants for rounding. More...
 
struct  vsmc::traits::PhiloxWeylConstantTrait< ResultType, I >
 Traits of PhiloxEngine constants for bumping the key (Weyl sequence) More...
 

Namespaces

 vsmc
 
 vsmc::internal
 
 vsmc::traits
 
 vsmc::traits::internal
 

Macros

#define VSMC_DEFINE_RNG_PHILOX_ROUND_CONSTANT(T, K, I, val)
 
#define VSMC_DEFINE_RNG_PHILOX_WELY_CONSTANT(T, I, val)
 
#define VSMC_RNG_PHILOX_ROUNDS   10
 PhiloxEngine default rounds. More...
 
#define VSMC_STATIC_ASSERT_RNG_PHILOX
 
#define VSMC_STATIC_ASSERT_RNG_PHILOX_RESULT_TYPE(ResultType)
 
#define VSMC_STATIC_ASSERT_RNG_PHILOX_SIZE(K)
 

Typedefs

typedef Philox4x32 vsmc::Philox
 The default 32-bits Philox engine. More...
 
typedef PhiloxEngine< uint32_t, 2 > vsmc::Philox2x32
 Philox2x32 RNG engine reimplemented. More...
 
typedef PhiloxEngine< uint64_t, 2 > vsmc::Philox2x64
 Philox2x64 RNG engine reimplemented. More...
 
typedef PhiloxEngine< uint32_t, 4 > vsmc::Philox4x32
 Philox4x32 RNG engine reimplemented. More...
 
typedef PhiloxEngine< uint64_t, 4 > vsmc::Philox4x64
 Philox4x64 RNG engine reimplemented. More...
 
typedef Philox4x64 vsmc::Philox_64
 The default 64-bits Philox engine. More...
 

Functions

template<std::size_t K, std::size_t I>
void vsmc::internal::philox_hilo (uint32_t b, uint32_t &hi, uint32_t &lo)
 
template<std::size_t K, std::size_t I>
void vsmc::internal::philox_hilo (uint64_t b, uint64_t &hi, uint64_t &lo)
 

Macro Definition Documentation

#define VSMC_DEFINE_RNG_PHILOX_ROUND_CONSTANT (   T,
  K,
  I,
  val 
)
Value:
template <> struct PhiloxRoundConstantValue < T, K, I > : \
public cxx11::integral_constant< T, val > {};

Definition at line 59 of file philox.hpp.

#define VSMC_DEFINE_RNG_PHILOX_WELY_CONSTANT (   T,
  I,
  val 
)
Value:
template <> struct PhiloxWeylConstantValue < T, I > : \
public cxx11::integral_constant< T, val > {};

Definition at line 55 of file philox.hpp.

#define VSMC_STATIC_ASSERT_RNG_PHILOX
Value:
#define VSMC_STATIC_ASSERT_RNG_PHILOX_SIZE(K)
Definition: philox.hpp:47
#define VSMC_STATIC_ASSERT_RNG_PHILOX_RESULT_TYPE(ResultType)
Definition: philox.hpp:41

Definition at line 51 of file philox.hpp.

#define VSMC_STATIC_ASSERT_RNG_PHILOX_RESULT_TYPE (   ResultType)
Value:
(cxx11::is_same<ResultType, uint32_t>::value || \
cxx11::is_same<ResultType, uint64_t>::value), \
USE_PhiloxEngine_WITH_INTEGER_TYPE_OTHER_THAN_uint32_t_OR_uint64_t)
#define VSMC_STATIC_ASSERT(cond, msg)
Definition: assert.hpp:46

Definition at line 41 of file philox.hpp.

#define VSMC_STATIC_ASSERT_RNG_PHILOX_SIZE (   K)
Value:
VSMC_STATIC_ASSERT((K == 2 || K == 4), \
USE_PhiloxEngine_WITH_SIZE_OTHER_THAN_2_OR_4)
#define VSMC_STATIC_ASSERT(cond, msg)
Definition: assert.hpp:46

Definition at line 47 of file philox.hpp.