On Tue, 4 Oct 2022 17:36:56 GMT, Chris Hennick <d...@openjdk.org> wrote:
>> This PR improves both the performance of `nextExponential` and >> `nextGaussian` and the distribution of output at the tails. It fixes the >> following imperfections: >> >> * Repeatedly adding DoubleZigguratTables.exponentialX0 to extra causes a >> rounding error to accumulate at the tail of the distribution (probably >> starting around `2*exponentialX0 == 0x1.e46eff20739afp3 ~ 15.1`); this PR >> fixes that by tracking the multiple of exponentialX0 as a long. (This >> distortion is worst when `x > 0x1.0p56` since in that case, a rounding error >> means `extra + x == extra`. >> * Reduces several equations using `Math.fma`. (This will almost certainly >> improve performance, and may or may not improve output distribution.) >> * Uses the newly-extracted `computeWinsorizedNextExponential` function to >> greatly reduce the probability that `nextGaussian` suffers from *two* tail >> cases of `nextExponential`. > > Chris Hennick has updated the pull request incrementally with one additional > commit since the last revision: > > Add parameter to enable/disable fixed PRNG seed @simonis @navyxliu @turbanoff @rgiulietti This is ready for review with the benchmark results. ------------- PR: https://git.openjdk.org/jdk/pull/8131