7#include "seed_generator.hpp"
8#include "../rapid/numeric_array.hpp"
12namespace hi::inline v1 {
23 [[nodiscard]]
constexpr explicit xorshift128p(
u64x2 new_state) noexcept : _state(new_state) {}
30 [[nodiscard]] T next()
noexcept;
35 [[nodiscard]] uint64_t
next() noexcept
71 auto tmp = s ^ t ^ (t >> 26);
75 t = insert<0, 1>(t, tmp);
89 [[nodiscard]]
u32x4 next() noexcept
91 return bit_cast<u32x4>(next<u64x2>());
95 [[nodiscard]] i32x4 next() noexcept
97 return bit_cast<i32x4>(next<u64x2>());
101 [[nodiscard]] i16x8
next() noexcept
103 return bit_cast<i16x8>(next<u64x2>());
This file includes required definitions.
#define hilet
Invariant should be the default for variables.
Definition required.hpp:23
Definition seed_generator.hpp:14
xorshift128+
Definition xorshift128p.hpp:16
uint64_t next() noexcept
Get the next 64 bit of random value.
Definition xorshift128p.hpp:35
u64x2 next() noexcept
Get next 128 bit of random value.
Definition xorshift128p.hpp:55