A vectorized version of Mersenne Twister Engine.
More...
#include <PacketRandomEngine.h>
|
using | result_type = Packet |
|
|
| MersenneTwister (uint64_t x0=default_seed) |
| Construct a new Mersenne Twister engine with a scalar seed. More...
|
|
| MersenneTwister (Packet x0) |
| Construct a new Mersenne Twister engine with a packet seed. More...
|
|
void | seed (Packet x0) |
| initialize the engine with a given seed More...
|
|
uint64_t | min () const |
| minimum value of the result More...
|
|
uint64_t | max () const |
| maximum value of the result More...
|
|
result_type | operator() () |
| Generates one random packet and advance the internal state. More...
|
|
void | discard (unsigned long long num) |
| Discards num items being generated. More...
|
|
internal::HalfPacket< Packet >::type | half () |
|
|
static constexpr int | word_size = 64 |
|
static constexpr int | state_size = _Nx |
|
static constexpr int | shift_size = _Mx |
|
static constexpr int | mask_bits = _Rx |
|
static constexpr uint64_t | parameter_a = _Px |
|
static constexpr int | output_u = _Ux |
|
static constexpr int | output_s = _Sx |
|
static constexpr uint64_t | output_b = _Bx |
|
static constexpr int | output_t = _Tx |
|
static constexpr uint64_t | output_c = _Cx |
|
static constexpr int | output_l = _Lx |
|
static constexpr uint64_t | default_seed = 5489U |
|
|
void | refill_lower () |
|
void | refill_upper () |
|
|
AlignedArray< Packet, _Nx *2 > | state |
|
size_t | stateIdx = 0 |
|
internal::HalfPacket< Packet >::type | cache |
|
bool | valid = false |
|
|
static constexpr uint64_t | _wMask = (uint64_t)-1 |
|
static constexpr uint64_t | _hMask = (_wMask << _Rx) & _wMask |
|
static constexpr uint64_t | _lMask = ~_hMask & _wMask |
|
template<typename Packet, int _Nx, int _Mx, int _Rx, uint64_t _Px, int _Ux, uint64_t _Dx, int _Sx, uint64_t _Bx, int _Tx, uint64_t _Cx, int _Lx, uint64_t _Fx>
class Eigen::Rand::MersenneTwister< Packet, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >
A vectorized version of Mersenne Twister Engine.
- Template Parameters
-
Packet | a type of integer packet being generated from this engine |
_Nx | |
_Mx | |
_Rx | |
_Px | |
_Ux | |
_Dx | |
_Sx | |
_Bx | |
_Tx | |
_Cx | |
_Lx | |
_Fx | |
- Note
- It is recommended to use the alias, Eigen::Rand::Vmt19937_64 rather than using raw MersenneTwister template class because the definition of Eigen::Rand::Vmt19937_64 is changed to use the appropriate PacketType depending on compile options and the architecture of machines.
◆ MersenneTwister() [1/2]
template<typename Packet , int _Nx, int _Mx, int _Rx, uint64_t _Px, int _Ux, uint64_t _Dx, int _Sx, uint64_t _Bx, int _Tx, uint64_t _Cx, int _Lx, uint64_t _Fx>
Eigen::Rand::MersenneTwister< Packet, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::MersenneTwister |
( |
uint64_t |
x0 = default_seed | ) |
|
|
inline |
Construct a new Mersenne Twister engine with a scalar seed.
- Parameters
-
x0 | scalar seed for the engine |
- Note
- The seed for the first element of packet is initialized to
x0
, for the second element to x0 + 1
, and the n-th element to is x0 + n - 1
.
◆ MersenneTwister() [2/2]
template<typename Packet , int _Nx, int _Mx, int _Rx, uint64_t _Px, int _Ux, uint64_t _Dx, int _Sx, uint64_t _Bx, int _Tx, uint64_t _Cx, int _Lx, uint64_t _Fx>
Eigen::Rand::MersenneTwister< Packet, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::MersenneTwister |
( |
Packet |
x0 | ) |
|
|
inline |
Construct a new Mersenne Twister engine with a packet seed.
- Parameters
-
x0 | packet seed for the engine |
◆ discard()
template<typename Packet , int _Nx, int _Mx, int _Rx, uint64_t _Px, int _Ux, uint64_t _Dx, int _Sx, uint64_t _Bx, int _Tx, uint64_t _Cx, int _Lx, uint64_t _Fx>
void Eigen::Rand::MersenneTwister< Packet, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::discard |
( |
unsigned long long |
num | ) |
|
|
inline |
Discards num
items being generated.
- Parameters
-
num | the number of items being discarded |
◆ max()
template<typename Packet , int _Nx, int _Mx, int _Rx, uint64_t _Px, int _Ux, uint64_t _Dx, int _Sx, uint64_t _Bx, int _Tx, uint64_t _Cx, int _Lx, uint64_t _Fx>
uint64_t Eigen::Rand::MersenneTwister< Packet, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::max |
( |
| ) |
const |
|
inline |
maximum value of the result
- Returns
- uint64_t
◆ min()
template<typename Packet , int _Nx, int _Mx, int _Rx, uint64_t _Px, int _Ux, uint64_t _Dx, int _Sx, uint64_t _Bx, int _Tx, uint64_t _Cx, int _Lx, uint64_t _Fx>
uint64_t Eigen::Rand::MersenneTwister< Packet, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::min |
( |
| ) |
const |
|
inline |
minimum value of the result
- Returns
- uint64_t
◆ operator()()
template<typename Packet , int _Nx, int _Mx, int _Rx, uint64_t _Px, int _Ux, uint64_t _Dx, int _Sx, uint64_t _Bx, int _Tx, uint64_t _Cx, int _Lx, uint64_t _Fx>
result_type Eigen::Rand::MersenneTwister< Packet, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::operator() |
( |
| ) |
|
|
inline |
Generates one random packet and advance the internal state.
- Returns
- result_type
- Note
- A value generated from this engine is not scalar, but packet type. If you need to extract scalar values, use Eigen::Rand::makeScalarRng or Eigen::Rand::PacketRandomEngineAdaptor.
◆ seed()
template<typename Packet , int _Nx, int _Mx, int _Rx, uint64_t _Px, int _Ux, uint64_t _Dx, int _Sx, uint64_t _Bx, int _Tx, uint64_t _Cx, int _Lx, uint64_t _Fx>
void Eigen::Rand::MersenneTwister< Packet, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::seed |
( |
Packet |
x0 | ) |
|
|
inline |
initialize the engine with a given seed
- Parameters
-
x0 | packet seed for the engine |
The documentation for this class was generated from the following file: