Dear rurban:
Just come to announce an improved version of wyrand, faster simpler and passed BigCrush
static inline uint64_t w1rand(uint64_t *s) {
const uint64_t c = 0xd07ebc63274654c7ull;
*s += c;
__uint128_t t = (__uint128_t)*s * (*s ^ c);
return (t >> 64) ^ t;
}
Dear rurban:
Just come to announce an improved version of wyrand, faster simpler and passed BigCrush
static inline uint64_t w1rand(uint64_t *s) {
const uint64_t c = 0xd07ebc63274654c7ull;
*s += c;
__uint128_t t = (__uint128_t)*s * (*s ^ c);
return (t >> 64) ^ t;
}