MCKL
Monte Carlo Kernel Library
Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
mckl::ThreefryGenerator< T, K, Rounds, Constants > Class Template Reference

Threefry RNG generator. More...

#include <mckl/random/threefry.hpp>

Public Types

using ctr_type = Counter< T, K >
 
using key_type = std::array< T, K >
 

Public Member Functions

key_type key () const
 
void operator() (const void *plain, void *cipher) const
 
template<typename ResultType >
void operator() (ctr_type &ctr, ResultType *r) const
 
template<typename ResultType >
void operator() (ctr_type &ctr, std::size_t n, ResultType *r) const
 
void reset (const key_type &key)
 
std::pair< T, T > tweak () const
 
void tweak (T t0, T t1)
 

Static Public Member Functions

static constexpr std::size_t size ()
 

Friends

bool operator!= (const ThreefryGenerator< T, K, Rounds, Constants > &gen1, const ThreefryGenerator< T, K, Rounds, Constants > &gen2)
 
template<typename CharT , typename Traits >
std::basic_ostream< CharT, Traits > & operator<< (std::basic_ostream< CharT, Traits > &os, const ThreefryGenerator< T, K, Rounds, Constants > &gen)
 
bool operator== (const ThreefryGenerator< T, K, Rounds, Constants > &gen1, const ThreefryGenerator< T, K, Rounds, Constants > &gen2)
 
template<typename CharT , typename Traits >
std::basic_istream< CharT, Traits > & operator>> (std::basic_istream< CharT, Traits > &is, ThreefryGenerator< T, K, Rounds, Constants > &gen)
 

Detailed Description

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
class mckl::ThreefryGenerator< T, K, Rounds, Constants >

Threefry RNG generator.

Template Parameters
TState vector value type
KState vector length
RoundsThe number of rounds
ConstantsA trait class that defines algorithm constants

Definition at line 84 of file threefry.hpp.

Member Typedef Documentation

◆ ctr_type

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
using mckl::ThreefryGenerator< T, K, Rounds, Constants >::ctr_type = Counter<T, K>

Definition at line 96 of file threefry.hpp.

◆ key_type

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
using mckl::ThreefryGenerator< T, K, Rounds, Constants >::key_type = std::array<T, K>

Definition at line 97 of file threefry.hpp.

Member Function Documentation

◆ key()

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
key_type mckl::ThreefryGenerator< T, K, Rounds, Constants >::key ( ) const
inline

Definition at line 101 of file threefry.hpp.

◆ operator()() [1/3]

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
void mckl::ThreefryGenerator< T, K, Rounds, Constants >::operator() ( const void *  plain,
void *  cipher 
) const
inline

Definition at line 135 of file threefry.hpp.

◆ operator()() [2/3]

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
template<typename ResultType >
void mckl::ThreefryGenerator< T, K, Rounds, Constants >::operator() ( ctr_type ctr,
ResultType *  r 
) const
inline

Definition at line 142 of file threefry.hpp.

◆ operator()() [3/3]

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
template<typename ResultType >
void mckl::ThreefryGenerator< T, K, Rounds, Constants >::operator() ( ctr_type ctr,
std::size_t  n,
ResultType *  r 
) const
inline

Definition at line 149 of file threefry.hpp.

◆ reset()

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
void mckl::ThreefryGenerator< T, K, Rounds, Constants >::reset ( const key_type key)
inline

Definition at line 109 of file threefry.hpp.

◆ size()

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
static constexpr std::size_t mckl::ThreefryGenerator< T, K, Rounds, Constants >::size ( )
inlinestatic

Definition at line 99 of file threefry.hpp.

◆ tweak() [1/2]

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
std::pair<T, T> mckl::ThreefryGenerator< T, K, Rounds, Constants >::tweak ( ) const
inline

Definition at line 123 of file threefry.hpp.

◆ tweak() [2/2]

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
void mckl::ThreefryGenerator< T, K, Rounds, Constants >::tweak ( t0,
t1 
)
inline

Definition at line 128 of file threefry.hpp.

Friends And Related Function Documentation

◆ operator!=

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
bool operator!= ( const ThreefryGenerator< T, K, Rounds, Constants > &  gen1,
const ThreefryGenerator< T, K, Rounds, Constants > &  gen2 
)
friend

Definition at line 162 of file threefry.hpp.

◆ operator<<

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
template<typename CharT , typename Traits >
std::basic_ostream<CharT, Traits>& operator<< ( std::basic_ostream< CharT, Traits > &  os,
const ThreefryGenerator< T, K, Rounds, Constants > &  gen 
)
friend

Definition at line 170 of file threefry.hpp.

◆ operator==

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
bool operator== ( const ThreefryGenerator< T, K, Rounds, Constants > &  gen1,
const ThreefryGenerator< T, K, Rounds, Constants > &  gen2 
)
friend

Definition at line 155 of file threefry.hpp.

◆ operator>>

template<typename T, std::size_t K, std::size_t Rounds = 20, typename Constants = ThreefryConstants<T, K>>
template<typename CharT , typename Traits >
std::basic_istream<CharT, Traits>& operator>> ( std::basic_istream< CharT, Traits > &  is,
ThreefryGenerator< T, K, Rounds, Constants > &  gen 
)
friend

Definition at line 184 of file threefry.hpp.