3#ifndef pRC_CORE_RANDOM_SEQ_H
4#define pRC_CORE_RANDOM_SEQ_H
11 requires IsSame<Seed, std::uint32_t>
17 static constexpr auto size()
23 template<IsConvertible<Seed>... Xs>
25 : mSeed(forward<Xs>(seeds)...)
38 constexpr Size t = (N >= 623) ? 11
43 constexpr Size p = (N - t) / 2;
44 constexpr Size q =
p + t;
47 auto const T = [&out, &
p](
auto const k)
50 out[k % N] ^ out[(k +
p) % N] ^ out[(k - 1) % N];
54 for(
Size k = 0; k < m; ++k)
56 Seed const r1 = 1664525U *
T(k);
66 return k % N + mSeed[k - 1];
74 out[(k +
p) % N] += r1;
75 out[(k + q) % N] += r2;
79 for(
Size k = m; k < m + N; ++k)
81 Seed const r3 = 1566083941U *
T(k);
82 Seed const r4 = r3 - k % N;
84 out[(k +
p) % N] ^= r3;
85 out[(k + q) % N] ^= r4;
103 template<class... Ts>
Definition declarations.hpp:12
constexpr auto generate() const
Definition seq.hpp:30
static constexpr auto size()
Definition seq.hpp:17
constexpr SeedSequence(Xs &&...seeds)
Definition seq.hpp:24
Seed result_type
Definition seq.hpp:15
constexpr auto & param() const
Definition seq.hpp:92
TN::Subscripts S
Definition externs_nonTT.hpp:9
pRC::Float<> T
Definition externs_nonTT.hpp:1
int i
Definition gmock-matchers-comparisons_test.cc:603
const char * p
Definition gmock-matchers-containers_test.cc:379
Definition cholesky.hpp:10
std::uint32_t Seed
Definition basics.hpp:33
std::size_t Size
Definition basics.hpp:31
static constexpr auto arg(T const &a)
Definition arg.hpp:11
static constexpr decltype(auto) max(X &&a)
Definition max.hpp:13
#define BEGIN_IGNORE_DIAGNOSTIC_GCC(warning)
Definition pragma.hpp:42
#define END_IGNORE_DIAGNOSTIC_GCC
Definition pragma.hpp:43