147 const unsigned long long val_ll = 6364136223846793005ULL;
148 const uint32_t val_31 = 31;
149 uint64_t oldstate = m_rng.state;
150 m_rng.state = (oldstate * val_ll) + m_rng.inc;
151 uint32_t xorshifted =
static_cast<uint32_t
>(((oldstate >> 18u) ^ oldstate) >> 27u);
152 uint32_t rot = oldstate >> 59u;
153 return (xorshifted >> rot) | (xorshifted << (static_cast<uint32_t>((-
static_cast<int64_t
>(rot)) & val_31)));