Comment Comment by eutectic Here's a variant which gives 64-bit output: uint64_t x = 0, w = 1; uint64_t msws64(void) { x = x * x + (w *= 0xe9acc0f334e93bd5ULL); return (x = (x >> 32) | (x << 32)) ^ w; } parent eutectic 2 years ago