4#ifndef TETL_RANDOM_XORSHIFT128PLUSPLUS_HPP
5#define TETL_RANDOM_XORSHIFT128PLUSPLUS_HPP
7#include <etl/_algorithm/equal.hpp>
8#include <etl/_bit/rotl.hpp>
9#include <etl/_cstdint/uint_t.hpp>
10#include <etl/_iterator/begin.hpp>
11#include <etl/_iterator/end.hpp>
12#include <etl/_limits/numeric_limits.hpp>
19 using result_type = uint32_t;
44 constexpr auto discard(
unsigned long long z)
noexcept ->
void
46 for (
auto i{0ULL}; i < z; ++i) {
53 uint32_t
const result =
rotl(_state[0] + _state[3]
, 7
) + _state[0];
54 uint32_t
const t = _state[1] << 9;
56 _state[2] ^= _state[0];
57 _state[3] ^= _state[1];
58 _state[1] ^= _state[2];
59 _state[0] ^= _state[3];
63 _state[3] =
rotl(_state[3]
, 11
);
constexpr auto equal(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2) -> bool
Definition equal.hpp:55
constexpr auto rotl(UInt t, int s) noexcept -> UInt
Computes the result of bitwise left-rotating the value of x by s positions. This operation is also kn...
Definition rotl.hpp:17
constexpr auto begin(T(&array)[N]) noexcept -> T *
Definition begin.hpp:35
constexpr auto end(T(&array)[N]) noexcept -> T *
Definition end.hpp:29
Definition adjacent_find.hpp:9
static constexpr auto min() noexcept -> unsigned int
Definition numeric_limits.hpp:665
static constexpr auto max() noexcept -> unsigned int
Definition numeric_limits.hpp:669
Definition numeric_limits.hpp:18
Definition xoshiro128plusplus.hpp:18
constexpr auto seed(result_type value=default_seed) noexcept -> void
Definition xoshiro128plusplus.hpp:39
constexpr auto discard(unsigned long long z) noexcept -> void
Definition xoshiro128plusplus.hpp:44
static constexpr auto max() noexcept -> result_type
Definition xoshiro128plusplus.hpp:34
constexpr xoshiro128plusplus()=default
static constexpr auto min() noexcept -> result_type
Definition xoshiro128plusplus.hpp:29
constexpr xoshiro128plusplus(result_type seed) noexcept
Definition xoshiro128plusplus.hpp:24
constexpr auto operator()() noexcept -> result_type
Definition xoshiro128plusplus.hpp:51
friend constexpr auto operator==(xoshiro128plusplus const &lhs, xoshiro128plusplus const &rhs) noexcept -> bool
Definition xoshiro128plusplus.hpp:69
static constexpr auto default_seed
Definition xoshiro128plusplus.hpp:20