Random123
Public Types | Public Member Functions | Static Public Attributes | List of all members
r123::Threefry2x64_R< ROUNDS > Class Template Reference

#include <Random123/threefry.h>

Public Types

typedef threefry2x64_ctr_t ctr_type
 
typedef threefry2x64_key_t key_type
 
typedef threefry2x64_key_t ukey_type
 

Public Member Functions

ctr_type operator() (ctr_type ctr, key_type key)
 

Static Public Attributes

static const R123_METAL_CONSTANT_ADDRESS_SPACE unsigned int rounds =ROUNDS
 

Detailed Description

template<unsigned int ROUNDS>
class r123::Threefry2x64_R< ROUNDS >

exports the member functions, typedefs and operator overloads required by a CBRNG class.

The template argument, ROUNDS, is the number of times the Threefry round function will be applied.

In November 2011, the authors discovered that 13 rounds of Threefry2x64 sequenced by strided, interleaved key and counter increments failed a very long (longer than the default BigCrush length) WeightDistrub test. At the same time, it was confirmed that 14 rounds passes much longer tests (up to 5x10^12 samples) of a similar nature. The authors know of no statistical flaws with ROUNDS=14 or more for Threefry2x64.

Member Typedef Documentation

◆ ctr_type

template<unsigned int ROUNDS>
typedef threefry2x64_ctr_t r123::Threefry2x64_R< ROUNDS >::ctr_type

◆ key_type

template<unsigned int ROUNDS>
typedef threefry2x64_key_t r123::Threefry2x64_R< ROUNDS >::key_type

◆ ukey_type

template<unsigned int ROUNDS>
typedef threefry2x64_key_t r123::Threefry2x64_R< ROUNDS >::ukey_type

Member Function Documentation

◆ operator()()

template<unsigned int ROUNDS>
ctr_type r123::Threefry2x64_R< ROUNDS >::operator() ( ctr_type  ctr,
key_type  key 
)
inline

Member Data Documentation

◆ rounds

template<unsigned int ROUNDS>
const R123_METAL_CONSTANT_ADDRESS_SPACE unsigned int r123::Threefry2x64_R< ROUNDS >::rounds =ROUNDS
static

The documentation for this class was generated from the following file: