You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2019/09/24 11:02:54 UTC

[commons-rng] 02/04: Updated the user guide performance section.

This is an automated email from the ASF dual-hosted git repository.

aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-rng.git

commit 6426aeba599ed3e5b4948f9124e2cbb6d7411ec7
Author: aherbert <ah...@apache.org>
AuthorDate: Mon Sep 23 14:22:14 2019 +0100

    Updated the user guide performance section.
    
    Removed user guide table for MarsagliaNormalizedGaussianSampler. This
    table is redundant given the guide contains a table for all the
    normalized Gaussian samplers.
    
    Updated user guide performance benchmarks for next generation. The
    section now has a single table with results for next boolean, double,
    long, float and int,
    
    Updated the normalized Gaussian sampler section with new results.
    
    Updated the benchmark platform specification.
    
    Sorted tables using the order of RandomSource. This allows each table to
    be compared to the Quality section which uses the same order.
---
 src/site/apt/userguide/rng.apt | 427 +++++++++++++++++++----------------------
 1 file changed, 194 insertions(+), 233 deletions(-)

diff --git a/src/site/apt/userguide/rng.apt b/src/site/apt/userguide/rng.apt
index dbf2342..9fa1805 100644
--- a/src/site/apt/userguide/rng.apt
+++ b/src/site/apt/userguide/rng.apt
@@ -518,252 +518,211 @@ ListSampler.shuffle(rng, list)
 
   All runs were performed on a platform with the following characteristics:
 
-  * CPU: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
+  * CPU: Intel(R) Xeon(R) CPU E5-1680 v3 @ 3.20GHz
 
-  * Java version: 1.8.0_181 (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
+  * Java version: 1.8.0_222 (build 1.8.0_222-8u222-b10-1ubuntu1~16.04.1-b10)
 
-  * JVM: OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
+  * JVM: OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
 
   []
 
-  The following tables indicate the performance (as measured by
-  {{{http://openjdk.java.net/projects/code-tools/jmh/}JMH}}) for generating
+  Performance was measured using the
+  {{{http://openjdk.java.net/projects/code-tools/jmh/}Java Micro-benchmark Harness (JMH)}}.
 
-  * a sequence of 32-bits integers (a.k.a. Java type <<<int>>>)
+  In these tables:
 
-  * a sequence of 64-bits integers (a.k.a. Java type <<<long>>>)
+  * The first column is the RNG identifier (see {{{../commons-rng-simple/apidocs/org/apache/commons/rng/simple/RandomSource.html}RandomSource}})
 
-  * a sequence of 64-bits floating point numbers (a.k.a. Java type <<<double>>>)
+  * <lower> is <better>.
 
   []
 
 
-  The first column is the RNG identifier (see {{{../commons-rng-simple/apidocs/org/apache/commons/rng/simple/RandomSource.html}RandomSource}}).
+* 4.1 Generating primitive values
+
+  The following table indicates the performance for generating:
+
+  * a sequence of true/false values (a.k.a. Java type <<<boolean>>>)
+
+  * a sequence of 64-bit floating point numbers (a.k.a. Java type <<<double>>>)
+
+  * a sequence of 64-bit integers (a.k.a. Java type <<<long>>>)
 
-  In these tables, <lower> is <better>.
-
-
-  ** Generating <<<int>>> values
-
-*--------------------------*----------------+
-|| RNG identifier          || Score (normalized to the score of <<<RandomSource.JDK>>>) |
-*--------------------------*----------------+
-| SPLIT_MIX_64             |        0.41479 |
-*--------------------------*----------------+
-| MWC_256                  |        0.45309 |
-*--------------------------*----------------+
-| TWO_CMRES                |        0.46736 |
-*--------------------------*----------------+
-| XOR_SHIFT_1024_S         |        0.47100 |
-*--------------------------*----------------+
-| MT_64                    |        0.54314 |
-*--------------------------*----------------+
-| KISS                     |        0.59604 |
-*--------------------------*----------------+
-| ISAAC                    |        0.65440 |
-*--------------------------*----------------+
-| MT                       |        0.70081 |
-*--------------------------*----------------+
-| WELL_512_A               |        0.82333 |
-*--------------------------*----------------+
-| WELL_1024_A              |        0.89367 |
-*--------------------------*----------------+
-| JDK                      |        1.00000 |
-*--------------------------*----------------+
-| WELL_19937_A             |        1.06771 |
-*--------------------------*----------------+
-| WELL_44497_A             |        1.08662 |
-*--------------------------*----------------+
-| WELL_19937_C             |        1.13443 |
-*--------------------------*----------------+
-| WELL_44497_B             |        1.17291 |
-*--------------------------*----------------+
-
-
-  ** Generating <<<long>>> values
-
-*--------------------------*----------------+
-|| RNG identifier          || Score (normalized to the score of <<<RandomSource.JDK>>>) |
-*--------------------------*----------------+
-| SPLIT_MIX_64             |        0.21751 |
-*--------------------------*----------------+
-| TWO_CMRES                |        0.25344 |
-*--------------------------*----------------+
-| XOR_SHIFT_1024_S         |        0.27299 |
-*--------------------------*----------------+
-| MWC_256                  |        0.32938 |
-*--------------------------*----------------+
-| MT_64                    |        0.36588 |
-*--------------------------*----------------+
-| KISS                     |        0.50416 |
-*--------------------------*----------------+
-| MT                       |        0.54819 |
-*--------------------------*----------------+
-| ISAAC                    |        0.60151 |
-*--------------------------*----------------+
-| WELL_1024_A              |        0.66864 |
-*--------------------------*----------------+
-| WELL_512_A               |        0.69384 |
-*--------------------------*----------------+
-| JDK                      |        1.00000 |
-*--------------------------*----------------+
-| WELL_19937_A             |        1.00596 |
-*--------------------------*----------------+
-| WELL_44497_A             |        1.05796 |
-*--------------------------*----------------+
-| WELL_19937_C             |        1.09265 |
-*--------------------------*----------------+
-| WELL_44497_B             |        1.16150 |
-*--------------------------*----------------+
-
-
-  ** Generating <<<double>>> values
-
-*--------------------------*----------------+
-|| RNG identifier          || Score (normalized to the score of <<<RandomSource.JDK>>>) |
-*--------------------------*----------------+
-| SPLIT_MIX_64             |        0.27611 |
-*--------------------------*----------------+
-| TWO_CMRES                |        0.31356 |
-*--------------------------*----------------+
-| XOR_SHIFT_1024_S         |        0.33200 |
-*--------------------------*----------------+
-| MWC_256                  |        0.38690 |
-*--------------------------*----------------+
-| MT_64                    |        0.43439 |
-*--------------------------*----------------+
-| KISS                     |        0.52137 |
-*--------------------------*----------------+
-| ISAAC                    |        0.60310 |
-*--------------------------*----------------+
-| MT                       |        0.61153 |
-*--------------------------*----------------+
-| WELL_1024_A              |        0.67584 |
-*--------------------------*----------------+
-| WELL_512_A               |        0.69410 |
-*--------------------------*----------------+
-| JDK                      |        1.00000 |
-*--------------------------*----------------+
-| WELL_19937_A             |        1.11309 |
-*--------------------------*----------------+
-| WELL_19937_C             |        1.15391 |
-*--------------------------*----------------+
-| WELL_44497_A             |        1.17865 |
-*--------------------------*----------------+
-| WELL_44497_B             |        1.20130 |
-*--------------------------*----------------+
-
-
-  ** Generating <<<boolean>>> values
-
-*--------------------------*----------------+
-|| RNG identifier          || Score (normalized to the score of <<<RandomSource.JDK>>>) |
-*--------------------------*----------------+
-| MT                       |        0.93637 |
-*--------------------------*----------------+
-| MWC_256                  |        0.95318 |
-*--------------------------*----------------+
-| WELL_19937_A             |        0.96010 |
-*--------------------------*----------------+
-| WELL_1024_A              |        0.96357 |
-*--------------------------*----------------+
-| WELL_44497_B             |        0.97277 |
-*--------------------------*----------------+
-| KISS                     |        0.97344 |
-*--------------------------*----------------+
-| WELL_19937_C             |        0.99193 |
-*--------------------------*----------------+
-| JDK                      |        1.00000 |
-*--------------------------*----------------+
-| ISAAC                    |        1.00620 |
-*--------------------------*----------------+
-| WELL_44497_A             |        1.00850 |
-*--------------------------*----------------+
-| WELL_512_A               |        1.03589 |
-*--------------------------*----------------+
-| XOR_SHIFT_1024_S         |        1.10674 |
-*--------------------------*----------------+
-| SPLIT_MIX_64             |        1.12140 |
-*--------------------------*----------------+
-| MT_64                    |        1.13390 |
-*--------------------------*----------------+
-| TWO_CMRES                |        1.13793 |
-*--------------------------*----------------+
-
-
-  ** Sampling from a <N(0,1)> Gaussian distribution ({{{../commons-rng-sampling/apidocs/org/apache/commons/rng/sampling/distribution/MarsagliaNormalizedGaussianSampler.html}MarsagliaNormalizedGaussianSampler}} implementation)
-
-*--------------------------*----------------+
-|| RNG identifier          || Score (normalized to the score of <<<RandomSource.JDK>>>) |
-*--------------------------*----------------+
-| SPLIT_MIX_64             |        0.41299 |
-*--------------------------*----------------+
-| XOR_SHIFT_1024_S         |        0.43226 |
-*--------------------------*----------------+
-| TWO_CMRES                |        0.50874 |
-*--------------------------*----------------+
-| MWC_256                  |        0.51402 |
-*--------------------------*----------------+
-| MT_64                    |        0.55053 |
-*--------------------------*----------------+
-| ISAAC                    |        0.62246 |
-*--------------------------*----------------+
-| KISS                     |        0.63574 |
-*--------------------------*----------------+
-| MT                       |        0.65961 |
-*--------------------------*----------------+
-| WELL_512_A               |        0.76610 |
-*--------------------------*----------------+
-| WELL_1024_A              |        0.82318 |
-*--------------------------*----------------+
-| WELL_19937_A             |        0.93490 |
-*--------------------------*----------------+
-| WELL_44497_A             |        0.93664 |
-*--------------------------*----------------+
-| JDK                      |        1.00000 |
-*--------------------------*----------------+
-| WELL_44497_B             |        1.01042 |
-*--------------------------*----------------+
-| WELL_19937_C             |        1.02012 |
-*--------------------------*----------------+
-
-
-  ** Comparing {{{../commons-rng-sampling/apidocs/org/apache/commons/rng/sampling/distribution/BoxMullerNormalizedGaussianSampler.html}BoxMullerNormalizedGaussianSampler}}, {{{../commons-rng-sampling/apidocs/org/apache/commons/rng/sampling/distribution/MarsagliaNormalizedGaussianSampler.html}MarsagliaNormalizedGaussianSampler}}, {{{../commons-rng-sampling/apidocs/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSampler.html}ZigguratNormalizedGaussianSampler}}.
-     Each score is normalized to the score of {{{https://docs.oracle.com/javase/8/docs/api/java/util/Random.html#nextGaussian--}nextGaussian()}} method of <<<java.util.Random>>>.
-
-*--------------------------*----------------+----------------+----------------+
-|| RNG identifier          || <<<BoxMullerNormalizedGaussianSampler>>> || <<<MarsagliaNormalizedGaussianSampler>>> || <<<ZigguratNormalizedGaussianSampler>>> |
-*--------------------------*----------------+----------------+----------------+
-| ISAAC                    |        0.98302 |        0.42238 |        0.25057 |
-*--------------------------*----------------+----------------+----------------+
-| JDK                      |        1.06425 |        0.64978 |        0.34814 |
-*--------------------------*----------------+----------------+----------------+
-| KISS                     |        0.95534 |        0.42419 |        0.22697 |
-*--------------------------*----------------+----------------+----------------+
-| MT                       |        0.96351 |        0.44536 |        0.25375 |
-*--------------------------*----------------+----------------+----------------+
-| MT_64                    |        0.88290 |        0.37917 |        0.22083 |
-*--------------------------*----------------+----------------+----------------+
-| MWC_256                  |        0.92266 |        0.35825 |        0.19624 |
-*--------------------------*----------------+----------------+----------------+
-| SPLIT_MIX_64             |        0.83485 |        0.29606 |        0.17689 |
-*--------------------------*----------------+----------------+----------------+
-| TWO_CMRES                |        0.85873 |        0.35949 |        0.20117 |
-*--------------------------*----------------+----------------+----------------+
-| WELL_1024_A              |        1.02734 |        0.53311 |        0.27986 |
-*--------------------------*----------------+----------------+----------------+
-| WELL_19937_A             |        1.08683 |        0.63207 |        0.33016 |
-*--------------------------*----------------+----------------+----------------+
-| WELL_19937_C             |        1.09748 |        0.61706 |        0.35864 |
-*--------------------------*----------------+----------------+----------------+
-| WELL_44497_A             |        1.12428 |        0.61903 |        0.35108 |
-*--------------------------*----------------+----------------+----------------+
-| WELL_44497_B             |        1.12845 |        0.65736 |        0.37151 |
-*--------------------------*----------------+----------------+----------------+
-| WELL_512_A               |        1.01548 |        0.50523 |        0.27629 |
-*--------------------------*----------------+----------------+----------------+
-| XOR_SHIFT_1024_S         |        0.86013 |        0.30990 |        0.18612 |
-*--------------------------*----------------+----------------+----------------+
+  * a sequence of 32-bit floating point numbers (a.k.a. Java type <<<float>>>)
+
+  * a sequence of 32-bit integers (a.k.a. Java type <<<int>>>)
+
+  []
+
+  Scores are normalized to the score of <<<RandomSource.JDK>>>.
+
+  Note that the core implementations use all the bits from the random source. For example a native generator of 32-bit <<<int>>> values requires 1 generation call per 32 <<<boolean>>> values; a native generator of 64-bit <<<long>>> values requires 1 generation call per 2 <<<int>>> values. This implementation is fast for all generators but requires a high quality random source. See the {{{a5._Quality}Quality}} section.
+
+*-----------------------*---------*---------*---------*---------*---------*
+|| RNG identifier       || <<<boolean>>> || <<<double>>> || <<<long>>> || <<<float>>> || <<<int>>> |
+*-----------------------+---------:---------:---------:---------:---------:
+| JDK                   |       1 |       1 |       1 |       1 |       1 |
+*-----------------------+---------:---------:---------:---------:---------:
+| WELL_512_A            | 1.22655 | 0.65071 | 0.62194 | 0.93623 | 0.78108 |
+*-----------------------+---------:---------:---------:---------:---------:
+| WELL_1024_A           | 1.39152 | 0.65642 | 0.61325 | 0.94264 | 0.75083 |
+*-----------------------+---------:---------:---------:---------:---------:
+| WELL_19937_A          | 1.26758 | 0.95801 | 0.90653 | 1.16216 | 1.12007 |
+*-----------------------+---------:---------:---------:---------:---------:
+| WELL_19937_C          | 1.63209 | 1.06124 | 0.93953 | 1.20843 | 1.12656 |
+*-----------------------+---------:---------:---------:---------:---------:
+| WELL_44497_A          | 1.27947 | 1.05099 | 0.97995 | 1.17942 | 1.14505 |
+*-----------------------+---------:---------:---------:---------:---------:
+| WELL_44497_B          | 1.29627 | 1.09318 | 1.03165 | 1.27612 | 1.20631 |
+*-----------------------+---------:---------:---------:---------:---------:
+| MT                    | 1.18432 | 0.50200 | 0.43068 | 0.68716 | 0.58454 |
+*-----------------------+---------:---------:---------:---------:---------:
+| ISAAC                 | 0.98139 | 0.54663 | 0.49022 | 0.60317 | 0.51107 |
+*-----------------------+---------:---------:---------:---------:---------:
+| SPLIT_MIX_64          | 1.14366 | 0.13497 | 0.09827 | 0.28296 | 0.19552 |
+*-----------------------+---------:---------:---------:---------:---------:
+| XOR_SHIFT_1024_S      | 1.14959 | 0.18661 | 0.14464 | 0.34088 | 0.24819 |
+*-----------------------+---------:---------:---------:---------:---------:
+| TWO_CMRES             | 1.16246 | 0.18330 | 0.15270 | 0.34889 | 0.33741 |
+*-----------------------+---------:---------:---------:---------:---------:
+| MT_64                 | 1.17373 | 0.27447 | 0.23400 | 0.48126 | 0.36190 |
+*-----------------------+---------:---------:---------:---------:---------:
+| MWC_256               | 1.15806 | 0.25385 | 0.21488 | 0.36679 | 0.25665 |
+*-----------------------+---------:---------:---------:---------:---------:
+| KISS                  | 1.17711 | 0.41357 | 0.41569 | 0.54175 | 0.42867 |
+*-----------------------+---------:---------:---------:---------:---------:
+| XOR_SHIFT_1024_S_PHI  | 1.16777 | 0.18515 | 0.14398 | 0.34273 | 0.24949 |
+*-----------------------+---------:---------:---------:---------:---------:
+| XO_RO_SHI_RO_64_S     | 1.16587 | 0.18998 | 0.13528 | 0.24388 | 0.18467 |
+*-----------------------+---------:---------:---------:---------:---------:
+| XO_RO_SHI_RO_64_SS    | 1.17344 | 0.24622 | 0.17832 | 0.29342 | 0.20841 |
+*-----------------------+---------:---------:---------:---------:---------:
+| XO_SHI_RO_128_PLUS    | 1.14797 | 0.26314 | 0.18365 | 0.32612 | 0.25379 |
+*-----------------------+---------:---------:---------:---------:---------:
+| XO_SHI_RO_128_SS      | 1.15925 | 0.32620 | 0.25970 | 0.58654 | 0.28701 |
+*-----------------------+---------:---------:---------:---------:---------:
+| XO_RO_SHI_RO_128_PLUS | 1.15165 | 0.10623 | 0.08201 | 0.25829 | 0.17334 |
+*-----------------------+---------:---------:---------:---------:---------:
+| XO_RO_SHI_RO_128_SS   | 1.15669 | 0.13465 | 0.10156 | 0.27627 | 0.20088 |
+*-----------------------+---------:---------:---------:---------:---------:
+| XO_SHI_RO_256_PLUS    | 1.14012 | 0.13972 | 0.11090 | 0.29441 | 0.21667 |
+*-----------------------+---------:---------:---------:---------:---------:
+| XO_SHI_RO_256_SS      | 1.14601 | 0.17540 | 0.12801 | 0.32067 | 0.23569 |
+*-----------------------+---------:---------:---------:---------:---------:
+| XO_SHI_RO_512_PLUS    | 1.17019 | 0.25455 | 0.19365 | 0.40153 | 0.34492 |
+*-----------------------+---------:---------:---------:---------:---------:
+| XO_SHI_RO_512_SS      | 1.16127 | 0.27050 | 0.21896 | 0.41566 | 0.35364 |
+*-----------------------+---------:---------:---------:---------:---------:
+| PCG_XSH_RR_32         | 0.94110 | 0.30309 | 0.26161 | 0.39280 | 0.19952 |
+*-----------------------+---------:---------:---------:---------:---------:
+| PCG_XSH_RS_32         | 0.94289 | 0.24067 | 0.18844 | 0.29202 | 0.20038 |
+*-----------------------+---------:---------:---------:---------:---------:
+| PCG_RXS_M_XS_64       | 1.14866 | 0.13325 | 0.11365 | 0.29439 | 0.20838 |
+*-----------------------+---------:---------:---------:---------:---------:
+| PCG_MCG_XSH_RR_32     | 0.94086 | 0.29029 | 0.28379 | 0.36289 | 0.17871 |
+*-----------------------+---------:---------:---------:---------:---------:
+| PCG_MCG_XSH_RS_32     | 0.93713 | 0.22664 | 0.17866 | 0.26299 | 0.16919 |
+*-----------------------+---------:---------:---------:---------:---------:
+| MSWS                  | 1.12773 | 0.17979 | 0.15224 | 0.23583 | 0.19053 |
+*-----------------------+---------:---------:---------:---------:---------:
+| SFC_32                | 1.14919 | 0.28371 | 0.19399 | 0.32854 | 0.26122 |
+*-----------------------+---------:---------:---------:---------:---------:
+| SFC_64                | 1.13896 | 0.14117 | 0.26818 | 0.31351 | 0.23760 |
+*-----------------------+---------:---------:---------:---------:---------:
+| JSF_32                | 1.14369 | 0.24454 | 0.17016 | 0.29664 | 0.22666 |
+*-----------------------+---------:---------:---------:---------:---------:
+| JSF_64                | 1.13731 | 0.13444 | 0.10965 | 0.27864 | 0.21230 |
+*-----------------------+---------:---------:---------:---------:---------:
+
+  The <<<RandomSource.JDK>>> generator uses thread-safe (synchronized) <<<int>>> generation which has a performance overhead (see the <<<int>>> generation results). For the <<<boolean>>> generation the synchronization occurs 1 in 32 calls and the resulting performance is good. However the output will be low quality and this generator should not be used. See the {{{a5._Quality}Quality}} section for details.
+
+
+* 4.2 Generating Gaussian samples
+
+  The following table compares the
+  {{{../commons-rng-sampling/apidocs/org/apache/commons/rng/sampling/distribution/BoxMullerNormalizedGaussianSampler.html}BoxMullerNormalizedGaussianSampler}},
+  {{{../commons-rng-sampling/apidocs/org/apache/commons/rng/sampling/distribution/MarsagliaNormalizedGaussianSampler.html}MarsagliaNormalizedGaussianSampler}},
+  and {{{../commons-rng-sampling/apidocs/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSampler.html}ZigguratNormalizedGaussianSampler}}.
+
+  Each score is normalized to the score of {{{https://docs.oracle.com/javase/8/docs/api/java/util/Random.html#nextGaussian--}nextGaussian()}} method of <<<java.util.Random>>>.
+
+*-----------------------*---------*---------*---------*
+|| RNG identifier       || <<<BoxMullerNormalizedGaussianSampler>>> || <<<MarsagliaNormalizedGaussianSampler>>> || <<<ZigguratNormalizedGaussianSampler>>> |
+*-----------------------+---------:---------:---------:
+| JDK                   | 0.77702 | 0.73404 | 0.35962 |
+*-----------------------+---------:---------:---------:
+| WELL_512_A            | 0.74382 | 0.55948 | 0.29644 |
+*-----------------------+---------:---------:---------:
+| WELL_1024_A           | 0.76090 | 0.58622 | 0.28907 |
+*-----------------------+---------:---------:---------:
+| WELL_19937_A          | 0.82990 | 0.69155 | 0.33604 |
+*-----------------------+---------:---------:---------:
+| WELL_19937_C          | 0.84971 | 0.68691 | 0.36119 |
+*-----------------------+---------:---------:---------:
+| WELL_44497_A          | 0.87142 | 0.68325 | 0.36127 |
+*-----------------------+---------:---------:---------:
+| WELL_44497_B          | 0.87542 | 0.72058 | 0.37799 |
+*-----------------------+---------:---------:---------:
+| MT                    | 0.66909 | 0.47290 | 0.25770 |
+*-----------------------+---------:---------:---------:
+| ISAAC                 | 0.68446 | 0.44854 | 0.26808 |
+*-----------------------+---------:---------:---------:
+| SPLIT_MIX_64          | 0.57968 | 0.31845 | 0.16815 |
+*-----------------------+---------:---------:---------:
+| XOR_SHIFT_1024_S      | 0.57622 | 0.32793 | 0.18497 |
+*-----------------------+---------:---------:---------:
+| TWO_CMRES             | 0.62548 | 0.35266 | 0.20977 |
+*-----------------------+---------:---------:---------:
+| MT_64                 | 0.62083 | 0.37632 | 0.21736 |
+*-----------------------+---------:---------:---------:
+| MWC_256               | 0.58796 | 0.35393 | 0.18765 |
+*-----------------------+---------:---------:---------:
+| KISS                  | 0.65734 | 0.45035 | 0.22921 |
+*-----------------------+---------:---------:---------:
+| XOR_SHIFT_1024_S_PHI  | 0.57800 | 0.32762 | 0.18537 |
+*-----------------------+---------:---------:---------:
+| XO_RO_SHI_RO_64_S     | 0.58318 | 0.33575 | 0.17617 |
+*-----------------------+---------:---------:---------:
+| XO_RO_SHI_RO_64_SS    | 0.59105 | 0.34913 | 0.19439 |
+*-----------------------+---------:---------:---------:
+| XO_SHI_RO_128_PLUS    | 0.59106 | 0.33631 | 0.17957 |
+*-----------------------+---------:---------:---------:
+| XO_SHI_RO_128_SS      | 0.61742 | 0.37101 | 0.19600 |
+*-----------------------+---------:---------:---------:
+| XO_RO_SHI_RO_128_PLUS | 0.55609 | 0.30674 | 0.14833 |
+*-----------------------+---------:---------:---------:
+| XO_RO_SHI_RO_128_SS   | 0.55722 | 0.32036 | 0.15569 |
+*-----------------------+---------:---------:---------:
+| XO_SHI_RO_256_PLUS    | 0.56563 | 0.30972 | 0.15639 |
+*-----------------------+---------:---------:---------:
+| XO_SHI_RO_256_SS      | 0.57758 | 0.31364 | 0.16399 |
+*-----------------------+---------:---------:---------:
+| XO_SHI_RO_512_PLUS    | 0.58733 | 0.36153 | 0.18189 |
+*-----------------------+---------:---------:---------:
+| XO_SHI_RO_512_SS      | 0.58114 | 0.32797 | 0.19000 |
+*-----------------------+---------:---------:---------:
+| PCG_XSH_RR_32         | 0.60315 | 0.41543 | 0.22119 |
+*-----------------------+---------:---------:---------:
+| PCG_XSH_RS_32         | 0.59535 | 0.35324 | 0.20068 |
+*-----------------------+---------:---------:---------:
+| PCG_RXS_M_XS_64       | 0.57059 | 0.32078 | 0.18113 |
+*-----------------------+---------:---------:---------:
+| PCG_MCG_XSH_RR_32     | 0.59735 | 0.41154 | 0.21198 |
+*-----------------------+---------:---------:---------:
+| PCG_MCG_XSH_RS_32     | 0.58732 | 0.34865 | 0.18043 |
+*-----------------------+---------:---------:---------:
+| MSWS                  | 0.57420 | 0.33353 | 0.17289 |
+*-----------------------+---------:---------:---------:
+| SFC_32                | 0.58872 | 0.34649 | 0.18663 |
+*-----------------------+---------:---------:---------:
+| SFC_64                | 0.55058 | 0.38304 | 0.15942 |
+*-----------------------+---------:---------:---------:
+| JSF_32                | 0.63566 | 0.35527 | 0.17554 |
+*-----------------------+---------:---------:---------:
+| JSF_64                | 0.56291 | 0.31014 | 0.15530 |
+*-----------------------+---------:---------:---------:
+
+  Note that the reference <<<java.util.Random>>> nextGaussian() method uses the Box-Muller algorithm and a synchronized method call per sample. The <<<RandomSource.JDK>>> RNG will use 1 synchronized method call for two samples when using the <<<BoxMullerNormalizedGaussianSampler>>>, hence the observed difference. All the other RNGs are not synchronized.
 
 
 5. Quality
@@ -781,6 +740,8 @@ ListSampler.shuffle(rng, list)
 
   []
 
+  Note that the test suites accept 32-bit integer values. The RNG implementations are tested using all the output bits from the generator. Any generator of 64-bit <<<long>>> values has the upper and lower 32-bits passed to the test suite.
+
   The first column is the RNG identifier (see {{{../commons-rng-simple/apidocs/org/apache/commons/rng/simple/RandomSource.html}RandomSource}}).
   The second and third columns contain the number of tests which <Dieharder> and <TestU01>
   respectively reported as below the accepted threshold for considering the sequence as