rarns64::raw64() bug
statistical tests & psuedo- random number generators (RNGs, PRNGs)
Status: Beta
Brought to you by:
orz
I am not certain this is a bug, but it feels like it..
in rarns16::raw16, Uint16 is used and the function rotate16 is used.
in rarns32::raw32, Uint32 is used and the function rotate32 is used.
however in rans54::raw64, Uint64 is used and both functions rotate64 AND rotate32 are used.
I have no point of comparison for this RNG so I can't assert this is a bug, but it feels to me that rotate32 should NOT be used with Uint64 since it does not perform a strict "rotation" in that case.
*rans64::raw64
It is a bug. I'd say it will be fixed in the next release, but it's more accurate to say that all rarns code has been rewritten for the next release.
New version of rarns algorithm looks like:
Though the seeding functions and fast-forwarding/rewinding are still being worked on. Shifts are 2/11/26/16 at 32 bit, and 1/3/10/8 at 16 bit. Those are all maximum period xor-based-generators with outputs hashed well enough to pass tests.
found another potential issue, I'll just write it here since there is a re-write:
in void PractRand::RNGs::Raw::efiix8x48::seed(Uint64 s1, Uint64 s2, Uint64 s3, Uint64 s4)
I would suggest replacing: