8#include "../SIMD/module.hpp"
9#include "../utility/utility.hpp"
10#include "../macros.hpp"
26 [[nodiscard]]
constexpr explicit xorshift128p(u64x2 new_state) noexcept : _state(new_state) {}
30 while (_state.x() == 0 or _state.y() == 0) {
36 [[nodiscard]] T next()
noexcept;
41 [[nodiscard]] uint64_t
next() noexcept
77 hilet tmp = s ^ t ^ (t >> 26);
81 t = insert<0, 1>(t, tmp);
95 [[nodiscard]] u32x4 next() noexcept
97 return u32x4::cast_from(next<u64x2>());
101 [[nodiscard]] i32x4 next() noexcept
103 return i32x4::cast_from(next<u64x2>());
107 [[nodiscard]] i16x8
next() noexcept
109 return i16x8::cast_from(next<u64x2>());
Cryptographically secure entropy.
DOXYGEN BUG.
Definition algorithm.hpp:16
constexpr Out narrow_cast(In const &rhs) noexcept
Cast numeric values without loss of precision.
Definition cast.hpp:377
Randomly generate an object.
Definition seed_intf.hpp:38
xorshift128+
Definition xorshift128p.hpp:19
uint64_t next() noexcept
Get the next 64 bit of random value.
Definition xorshift128p.hpp:41
u64x2 next() noexcept
Get next 128 bit of random value.
Definition xorshift128p.hpp:61