> This PR improves both the worst-case 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 > prevent `nextGaussian` from going into the `nextExponential` tail twice.
Chris Hennick has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 17 commits: - Merge branch 'master' of https://git.openjdk.org/jdk into patch-1 - Merge branch 'master' of https://git.openjdk.org/jdk into patch-1 - Merge branch 'master' into patch-1 - Update copyright date in RandomNext.java - Update copyright date in RandomGeneratorNext.java - Update copyright date in RandomGeneratorExponentialGaussian.java - Update copyright date in RandomSupport.java - Add parameter to enable/disable fixed PRNG seed - Rewrite Javadoc - Simplify Javadoc description - ... and 7 more: https://git.openjdk.org/jdk/compare/08fbb7bb...2470c00a ------------- Changes: https://git.openjdk.org/jdk/pull/8131/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=8131&range=18 Stats: 144 lines in 4 files changed: 129 ins; 1 del; 14 mod Patch: https://git.openjdk.org/jdk/pull/8131.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/8131/head:pull/8131 PR: https://git.openjdk.org/jdk/pull/8131