How/why does this noise function work?
function noise(x) x = (x << 13) ^ x; return (1.0 - ((x * (x * x * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0);
I've found it in several places with different primes, but couldn't find an actual explanation of why/how it works.
I know what the code itself is doing (shift, xor, multiply-and-overflow, bitwise-and w/ intmax - 1, etc), but I don't get why those things are done or how it results in acceptable noise.
Why are these operations, why this order? Why primes? I know "because non-primes can generate observable patterns", but why is that?
Why divide by (2**32 - 1)/2? or rather, why does that give a 0..2 value?