Rosetta
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
numeric::random::mt19937_RG Class Reference

#include <mt19937.hh>

Inheritance diagram for numeric::random::mt19937_RG:
Inheritance graph
[legend]

Public Member Functions

 mt19937_RG ()
 
 ~mt19937_RG () override=default
 
void setSeed (int const iseed) override
 Set seed and state. More...
 
void setSeed (std::string const &) override
 Set seed and state. More...
 
int getSeed () override
 
double getRandom () override
 
void saveState (std::ostream &out) override
 Serializes generator state to stream losslessly. More...
 
void restoreState (std::istream &in) override
 Deserializes generator state from stream losslessly. More...
 
- Public Member Functions inherited from numeric::random::uniform_RG
 uniform_RG ()
 
 ~uniform_RG () override=default
 
- Public Member Functions inherited from utility::VirtualBase
 VirtualBase ()=default
 Default constructor. More...
 
virtual ~VirtualBase ()=default
 The virtual destructor is one of the main reasons for the VirtualBase class. More...
 
 VirtualBase (VirtualBase const &)=default
 
 VirtualBase (VirtualBase &&)=default
 
VirtualBaseoperator= (VirtualBase const &)=default
 
VirtualBaseoperator= (VirtualBase &&)=default
 

Protected Member Functions

void initial_mask (void)
 
void period_certification ()
 
void init_by_array (uint32_t init_key[], int key_length)
 
void gen_rand_all (void)
 

Private Attributes

int iseed_
 
w128_t sformat [DSFMT_N+1]
 
doublepsformat64
 
int sformat_idx
 
int is_sformat_initialized
 

Constructor & Destructor Documentation

◆ mt19937_RG()

numeric::random::mt19937_RG::mt19937_RG ( )
inline

References W128_T::d, psformat64, and sformat.

◆ ~mt19937_RG()

numeric::random::mt19937_RG::~mt19937_RG ( )
overridedefault

Member Function Documentation

◆ gen_rand_all()

void numeric::random::mt19937_RG::gen_rand_all ( void  )
inlineprotected

This function fills the internal state array with double precision floating point pseudorandom numbers of the IEEE 754 format.

References numeric::random::do_recursion(), DSFMT_N, DSFMT_POS1, create_a3b_hbs::i, and sformat.

Referenced by getRandom().

◆ getRandom()

double numeric::random::mt19937_RG::getRandom ( )
inlineoverridevirtual

◆ getSeed()

int numeric::random::mt19937_RG::getSeed ( )
inlineoverridevirtual

Implements numeric::random::uniform_RG.

References iseed_.

◆ init_by_array()

void numeric::random::mt19937_RG::init_by_array ( uint32_t  init_key[],
int  key_length 
)
inlineprotected

This function initializes the internal state array, with an array of 32-bit integers used as the seeds

Parameters
init_keythe array of 32-bit integers, used as a seed.
key_lengththe length of init_key.

References count, DSFMT_N, DSFMT_N64, create_a3b_hbs::i, numeric::random::ini_func1(), numeric::random::ini_func2(), initial_mask(), is_sformat_initialized, create_a3b_hbs::j, period_certification(), create_a3b_hbs::r, sformat, sformat_idx, numeric::random::sformat_idxof(), subloop_histogram::size, and W128_T::u32.

◆ initial_mask()

void numeric::random::mt19937_RG::initial_mask ( void  )
inlineprotected

This function initializes the internal state array to fit the IEEE 754 format.

References DSFMT_HIGH_CONST, DSFMT_LOW_MASK, DSFMT_N, create_a3b_hbs::i, sformat, and W128_T::u.

Referenced by init_by_array(), and setSeed().

◆ period_certification()

void numeric::random::mt19937_RG::period_certification ( )
inlineprotected

◆ restoreState()

void numeric::random::mt19937_RG::restoreState ( std::istream &  in)
inlineoverridevirtual

Deserializes generator state from stream losslessly.

Implements numeric::random::uniform_RG.

References create_a3b_hbs::i, is_sformat_initialized, sformat, and sformat_idx.

◆ saveState()

void numeric::random::mt19937_RG::saveState ( std::ostream &  out)
inlineoverridevirtual

Serializes generator state to stream losslessly.

Implements numeric::random::uniform_RG.

References create_a3b_hbs::i, is_sformat_initialized, sformat, and sformat_idx.

◆ setSeed() [1/2]

void numeric::random::mt19937_RG::setSeed ( int const  iseed)
inlineoverridevirtual

◆ setSeed() [2/2]

void numeric::random::mt19937_RG::setSeed ( std::string const &  )
inlineoverridevirtual

Set seed and state.

Implements numeric::random::uniform_RG.

Member Data Documentation

◆ is_sformat_initialized

int numeric::random::mt19937_RG::is_sformat_initialized
private

a flag: it is 0 if and only if the internal state is not yet initialized.

Referenced by getRandom(), init_by_array(), restoreState(), saveState(), and setSeed().

◆ iseed_

int numeric::random::mt19937_RG::iseed_
private

The integer used to seed the RNG.

Referenced by getSeed(), and setSeed().

◆ psformat64

double* numeric::random::mt19937_RG::psformat64
private

the double pointer to the 128-bit internal state array

Referenced by getRandom(), and mt19937_RG().

◆ sformat

w128_t numeric::random::mt19937_RG::sformat[DSFMT_N+1]
private

◆ sformat_idx

int numeric::random::mt19937_RG::sformat_idx
private

index counter to the internal state array as double

Referenced by getRandom(), init_by_array(), restoreState(), saveState(), and setSeed().


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