module xoshiro.util; pragma(inline, true) uint rotl(uint v, byte s) pure nothrow @nogc @safe { return (v << s) | (v >> (32 - s)); } pragma(inline, true) ulong rotl(ulong x, byte s) pure nothrow @nogc @safe { return (x << s) | (x >> (64 - s)); } ulong splitMix(ref ulong x) pure nothrow @safe @nogc { x += 0x9E3779B97F4A7C15; ulong z = x; z = (z ^ (z >> 30)) * 0xBF58476D1CE4E5B9; z = (z ^ (z >> 27)) * 0x94D049BB133111EB; z = z ^ (z >> 31); return z; }