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 () |
| |
|
|
std::array< 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: