RNG-168: LXM family of random number generators
authorAlex Herbert <aherbert@apache.org>
Wed, 9 Mar 2022 00:23:36 +0000 (00:23 +0000)
committerAlex Herbert <aherbert@apache.org>
Sun, 17 Apr 2022 13:21:01 +0000 (14:21 +0100)
commitd5e653c43ec68d55e23ad8ad5a3cc755567ffdb9
tree570d984f0b40c2bebf6e6cbc6590c739cabb8509
parent6a279c558274d06e692b1c45092b326919258536
RNG-168: LXM family of random number generators

Add support for generators included in JDK 17:

L32X64Mix
L64X128StarStar
L64X128Mix
L64X256Mix
L64X1024Mix
L128X128Mix
L128X256Mix
L128X1024Mix

Added benchmark for support routines for computing the unsigned long
multiplications in the 128-bit LCG (linear congruential generator).

Added a benchmark for the jump function to allow comparison with the
equivalent base XBG (xor-based generator).

Added a faster carry computation than the method provided in the
reference LXM paper.
40 files changed:
commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/L32X64Mix.java [new file with mode: 0644]
commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/LXMSupport.java [new file with mode: 0644]
commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/AbstractL128.java [new file with mode: 0644]
commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/AbstractL64.java [new file with mode: 0644]
commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/AbstractL64X128.java [new file with mode: 0644]
commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/AbstractXoRoShiRo1024.java
commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/L128X1024Mix.java [new file with mode: 0644]
commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/L128X128Mix.java [new file with mode: 0644]
commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/L128X256Mix.java [new file with mode: 0644]
commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/L64X1024Mix.java [new file with mode: 0644]
commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/L64X128Mix.java [new file with mode: 0644]
commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/L64X128StarStar.java [new file with mode: 0644]
commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/L64X256Mix.java [new file with mode: 0644]
commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/LXMSupport.java [new file with mode: 0644]
commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersList.java
commons-rng-core/src/test/java/org/apache/commons/rng/core/RandomAssert.java
commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/AbstractLXMTest.java [new file with mode: 0644]
commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/L32X64MixTest.java [new file with mode: 0644]
commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/LXMSupportTest.java [new file with mode: 0644]
commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/AbstractLXMTest.java [new file with mode: 0644]
commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/L128X1024MixTest.java [new file with mode: 0644]
commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/L128X128MixTest.java [new file with mode: 0644]
commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/L128X256MixTest.java [new file with mode: 0644]
commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/L64X1024MixTest.java [new file with mode: 0644]
commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/L64X128MixTest.java [new file with mode: 0644]
commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/L64X128StarStarTest.java [new file with mode: 0644]
commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/L64X256MixTest.java [new file with mode: 0644]
commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/LXMSupportTest.java [new file with mode: 0644]
commons-rng-examples/examples-jmh/pom.xml
commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/RandomSourceValues.java
commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/core/BaselineSources.java
commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/core/JumpBenchmark.java [new file with mode: 0644]
commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/core/LXMBenchmark.java [new file with mode: 0644]
commons-rng-examples/examples-jmh/src/test/java/org/apache/commons/rng/examples/jmh/core/LXMBenchmarkTest.java [new file with mode: 0644]
commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java
commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersList.java
commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/RandomSourceInternalParametricTest.java
src/main/resources/checkstyle/checkstyle-suppressions.xml
src/main/resources/pmd/pmd-ruleset.xml