From bd0692ba0c2dcf51b92f97d97142c1eae4fa0efc Mon Sep 17 00:00:00 2001 From: Oleg Grenrus Date: Mon, 14 May 2018 03:17:41 +0300 Subject: [PATCH] Correct mix64 --- src/System/Random/SplitMix.hs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/System/Random/SplitMix.hs b/src/System/Random/SplitMix.hs index e278b63..6ae7e2c 100644 --- a/src/System/Random/SplitMix.hs +++ b/src/System/Random/SplitMix.hs @@ -100,14 +100,12 @@ doubleUlp = 1.0 / fromIntegral (1 `shiftL` 53 :: Word64) -- Note: in JDK implementations the mix64 and mix64variant13 -- (which is inlined into mixGamma) are swapped. -- --- It's easy to verify which constants are from MurmurHash3. --- See the link. --- -- I have no idea if swapping them affects statistical properties. mix64 :: Word64 -> Word64 mix64 z0 = - let z1 = shiftXorMultiply 33 0xc4ceb9fe1a85ec53 z0 - z2 = shiftXorMultiply 33 0xff51afd7ed558ccd z1 + -- MurmurHash3Mixer + let z1 = shiftXorMultiply 33 0xff51afd7ed558ccd z0 + z2 = shiftXorMultiply 33 0xc4ceb9fe1a85ec53 z1 z3 = shiftXor 33 z2 in z3