9 #pragma clang diagnostic ignored "-Wc++11-long-long" 11 constexpr uint64_t
a = 0xeece66d5deece66dULL;
12 constexpr uint64_t
c = 2147483647;
14 constexpr
int bias = 127 << 23;
18 static_assert(
sizeof(
int) ==
sizeof(
float),
"Floats and ints are converted between, they must be the same size.");
19 initial =
a * initial +
c;
20 int32_t temp = ((initial >> 25) & 0x7FFFFF) |
bias;
21 return reinterpret_cast<float&
>(temp) - 1;
float merand48_noadvance(uint64_t v)
float merand48(uint64_t &initial)