fp64

Results 20 comments of fp64

I can do a PR for SDLMain changes, and a couple of *really* low-hanging-fruit warnings, while at it.

...and [done](https://github.com/hrydgard/ppsspp/pull/15849).

With this the issue can be closed, probably.

Somewhat lagged reply. > The constant 'a' doesn't seem to justify itself This matches my experience trying to use it as a step of a [stateless PRNG](https://en.wikipedia.org/wiki/Counter-based_random_number_generator_(CBRNG)). Note that `x^=((x+a)*(x+a))&-2;`...

Actually, I also settled on XQO form in my [PRNGs](https://gist.github.com/fp64/126289051f0c9e1b70bcba7c3e07a82f). Essentially, once you realize that `x^(x*x)` produces every even integer exactly twice, there's a whole lot of ways to "fix"...

> Another trick with XQO: the constant used with OR can be any odd number, not just 1 Well. This also yields much less conspicuous zeroes, e.g. `(x^(x*x|1))==0` happens at...

The (hand-made) function ```c uint32_t hash(uint32_t x) { x ^= x >> 15; x ^= (x * x) | 1u; x ^= x >> 17; x *= 0x9E3779B9u; x ^=...

> I assumed that form is more latency-friendly It may be, slightly: https://godbolt.org/z/5jznWeoW5 . So you might be better off writing it as ```c uint32_t hash(uint32_t x) { x ^=...

> https://mostlymangling.blogspot.com/ Unless I'm missing something (and I well may), measuring things becomes somewhat harder in 64 bit. E.g. I just spent a number of minutes, running Monte-Carlo (exhaustive is...

From https://mostlymangling.blogspot.com/2019/01/better-stronger-mixer-and-test-procedure.html (except I changed suffixes to `ull`): ```c uint64_t ettingerMixer(uint64_t v) { uint64_t z = (v ^ 0xDB4F0B9175AE2165ull) * 0x4823A80B2006E21Bull; z ^= rol64(z, 52) ^ rol64(z, 21) ^ 0x9E3779B97F4A7C15ull;...