Random.cpp File Reference

Implementation code for RandomLib. More...

#include "RandomLib/Random.hpp"
#include <fstream>
#include <ctime>
#include <sstream>
#include <iomanip>
#include <sys/time.h>
#include <unistd.h>

Go to the source code of this file.

Namespaces

namespace  RandomLib

Defines

#define RANDOM_CPP   "$Id: Random.cpp 6489 2008-11-10 21:37:47Z ckarney $"
#define MT19937_STEP(I, J, K)
#define MT19937_REVSTEP(I, J, K)
#define SFMT19937_STEP32(I, J)
#define SFMT19937_REVSTEP32(I, J, K, L)
#define SFMT19937_STEP64(I, J)
#define SFMT19937_REVSTEP64(I, J, K, L)

Functions

 RCSID_DECL (RANDOM_CPP)
 RCSID_DECL (RANDOMTYPE_HPP)
 RCSID_DECL (RANDOMSEED_HPP)
 RCSID_DECL (RANDOMENGINE_HPP)
 RCSID_DECL (RANDOMMIXER_HPP)
 RCSID_DECL (RANDOMALGORITHM_HPP)
 RCSID_DECL (RANDOMPOWER2_HPP)
 RCSID_DECL (RANDOMCANONICAL_HPP)


Detailed Description

Implementation code for RandomLib.

Written by Charles Karney <charles@karney.com> and licensed under the LGPL. For more information, see http://charles.karney.info/random/

Definition in file Random.cpp.


Define Documentation

#define RANDOM_CPP   "$Id: Random.cpp 6489 2008-11-10 21:37:47Z ckarney $"

Definition at line 82 of file Random.cpp.

#define MT19937_STEP ( I,
J,
 ) 

Value:

statev[I] = statev[K] ^         \
    (statev[J] & engine_type(1) ? magic : engine_type(0)) ^     \
    ((statev[I] & upper) | (statev[J] & lower)) >> 1

Definition at line 677 of file Random.cpp.

Referenced by RandomLib::MT19937< RandomType >::Transition().

#define MT19937_REVSTEP ( I,
J,
 ) 

Value:

{                                       \
    engine_type q = statev[J] ^ statev[K], s = q >> (width - 1);        \
    q = (q ^ (s ? magic : engine_type(0))) << 1 | s;                    \
    statev[I] = (p & upper) | (q & lower);                              \
    p = q;                                                              \
  }

Definition at line 688 of file Random.cpp.

Referenced by RandomLib::MT19937< RandomType >::Transition().

#define SFMT19937_STEP32 ( I,
 ) 

Value:

{                               \
    internal_type t = statev[I] ^ statev[I] << 8 ^              \
      statev[J] >> 11 & magic0 ^                                \
      (s0 >> 8 | s1 << 24) ^ r0 << 18;                          \
    s0 = r0; r0 = t & mask;                                     \
    t = statev[I + 1] ^                                         \
      (statev[I + 1] << 8 | statev[I] >> 24) ^                  \
      statev[J + 1] >> 11 & magic1 ^                            \
      (s1 >> 8 | s2 << 24) ^ r1 << 18;                          \
    s1 = r1; r1 = t & mask;                                     \
    t = statev[I + 2] ^                                         \
      (statev[I + 2] << 8 | statev[I + 1] >> 24) ^              \
      statev[J + 2] >> 11 & magic2 ^                            \
      (s2 >> 8 | s3 << 24) ^ r2 << 18;                          \
    s2 = r2; r2 = t & mask;                                     \
    t = statev[I + 3] ^                                         \
      (statev[I + 3] << 8 | statev[I + 2] >> 24) ^              \
      statev[J + 3] >> 11 & magic3 ^ s3 >> 8 ^ r3 << 18;        \
    s3 = r3; r3 = t & mask;                                     \
    statev[I    ] = r0; statev[I + 1] = r1;                     \
    statev[I + 2] = r2; statev[I + 3] = r3;                     \
  }

Definition at line 997 of file Random.cpp.

Referenced by RandomLib::SFMT19937< RandomType >::Transition().

#define SFMT19937_REVSTEP32 ( I,
J,
K,
 ) 

Value:

{                       \
    internal_type                                               \
      t0 = (statev[I] ^ statev[J] >> 11 & magic0 ^              \
            (statev[K] >> 8 | statev[K + 1] << 24) ^            \
            statev[L] << 18) & mask,                            \
      t1 = (statev[I + 1] ^                                     \
            statev[J + 1] >> 11 & magic1 ^                      \
            (statev[K + 1] >> 8 | statev[K + 2] << 24) ^        \
            statev[L + 1] << 18) & mask,                        \
      t2 = (statev[I + 2] ^                                     \
            statev[J + 2] >> 11 & magic2 ^                      \
            (statev[K + 2] >> 8 | statev[K + 3] << 24) ^        \
            statev[L + 2] << 18) & mask,                        \
      t3 = (statev[I + 3] ^                                     \
            statev[J + 3] >> 11 & magic3 ^                      \
            statev[K + 3] >> 8 ^                                \
            statev[L + 3] << 18) & mask;                        \
    t3 ^= t1; t2 ^= t0; t3 ^= t2; t2 ^= t1; t1 ^= t0;           \
    t3 ^= t2 >> 16 | t3 << 16 & mask;                           \
    t2 ^= t1 >> 16 | t2 << 16 & mask;                           \
    t1 ^= t0 >> 16 | t1 << 16 & mask;                           \
    t0 ^=            t0 << 16 & mask;                           \
    statev[I    ] = t0 ^             t0 << 8 & mask;            \
    statev[I + 1] = t1 ^ (t0 >> 24 | t1 << 8 & mask);           \
    statev[I + 2] = t2 ^ (t1 >> 24 | t2 << 8 & mask);           \
    statev[I + 3] = t3 ^ (t2 >> 24 | t3 << 8 & mask);           \
 }

Definition at line 1020 of file Random.cpp.

Referenced by RandomLib::SFMT19937< RandomType >::Transition().

#define SFMT19937_STEP64 ( I,
 ) 

Value:

{                       \
    internal_type t = statev[I] ^ statev[I] << 8 ^      \
      statev[J] >> 11 & magic0 ^                        \
      (s0 >> 8 | s1 << 56) ^ r0 << 18 & mask18;         \
    s0 = r0; r0 = t & mask;                             \
    t = statev[I + 1] ^                                 \
      (statev[I + 1] << 8 | statev[I] >> 56) ^          \
      statev[J + 1] >> 11 & magic1 ^                    \
      s1 >> 8 ^ r1 << 18 & mask18;                      \
    s1 = r1; r1 = t & mask;                             \
    statev[I] = r0; statev[I + 1] = r1;                 \
  }

Definition at line 1080 of file Random.cpp.

Referenced by RandomLib::SFMT19937< RandomType >::Transition().

#define SFMT19937_REVSTEP64 ( I,
J,
K,
 ) 

Value:

{                       \
    internal_type                                               \
      t0 = statev[I] ^ statev[J] >> 11 & magic0 ^               \
      (statev[K] >> 8 | statev[K + 1] << 56 & mask)             \
      ^ statev[L] << 18 & mask18,                               \
      t1 = statev[I + 1] ^ statev[J + 1] >> 11 & magic1 ^       \
      statev[K + 1] >> 8 ^ statev[L + 1] << 18 & mask18;        \
    t1 ^= t0;                                                   \
    t1 ^= t0 >> 32 ^ t1 << 32 & mask;                           \
    t0 ^=            t0 << 32 & mask;                           \
    t1 ^= t0 >> 48 ^ t1 << 16 & mask;                           \
    t0 ^=            t0 << 16 & mask;                           \
    statev[I    ] = t0 ^            t0 << 8 & mask;             \
    statev[I + 1] = t1 ^ t0 >> 56 ^ t1 << 8 & mask;             \
 }

Definition at line 1098 of file Random.cpp.

Referenced by RandomLib::SFMT19937< RandomType >::Transition().


Function Documentation

RCSID_DECL ( RANDOM_CPP   ) 

RCSID_DECL ( RANDOMTYPE_HPP   ) 

RCSID_DECL ( RANDOMSEED_HPP   ) 

RCSID_DECL ( RANDOMENGINE_HPP   ) 

RCSID_DECL ( RANDOMMIXER_HPP   ) 

RCSID_DECL ( RANDOMALGORITHM_HPP   ) 

RCSID_DECL ( RANDOMPOWER2_HPP   ) 

RCSID_DECL ( RANDOMCANONICAL_HPP   ) 


Generated on Mon Nov 10 16:59:10 2008 by  doxygen 1.5.6