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 e5db651768757686064aec6adc845d39e9c3f332
Author: Alex Herbert <aherb...@apache.org>
AuthorDate: Fri Nov 22 22:28:17 2019 +0000

    [RNG-124]: Add fixed increment PCG generators.
    
    Adds a single Long argument constructor to:
    
    AbstractPcg6432
    PcgXshRr32
    PcgXshRs32
    PcgRxsMXs64
    
    Adds RandomSource:
    
    PCG_XSH_RR_32_OS
    PCG_XSH_RS_32_OS
    PCG_RXS_M_XS_64_OS
---
 .../commons/rng/core/source32/AbstractPcg6432.java | 17 ++++++++++++++
 .../commons/rng/core/source32/PcgXshRr32.java      | 14 ++++++++++++
 .../commons/rng/core/source32/PcgXshRs32.java      | 14 ++++++++++++
 .../commons/rng/core/source64/PcgRxsMXs64.java     | 17 ++++++++++++++
 .../org/apache/commons/rng/core/ProvidersList.java |  3 +++
 .../commons/rng/core/source32/PcgXshRr32Test.java  | 23 ++++++++++++++++++-
 .../commons/rng/core/source32/PcgXshRs32Test.java  | 23 ++++++++++++++++++-
 .../commons/rng/core/source64/PcgRxsMXs64Test.java | 23 ++++++++++++++++++-
 .../rng/examples/jmh/RandomSourceValues.java       |  3 +++
 .../rng/examples/jmh/core/BaselineSources.java     |  3 +++
 .../apache/commons/rng/simple/RandomSource.java    | 26 +++++++++++++++++++++-
 .../rng/simple/internal/ProviderBuilder.java       | 14 +++++++++++-
 .../apache/commons/rng/simple/ProvidersList.java   |  3 +++
 .../RandomSourceInternalParametricTest.java        |  3 +++
 14 files changed, 181 insertions(+), 5 deletions(-)

diff --git 
a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/AbstractPcg6432.java
 
b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/AbstractPcg6432.java
index 3a592ee..f499144 100644
--- 
a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/AbstractPcg6432.java
+++ 
b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/AbstractPcg6432.java
@@ -30,6 +30,8 @@ import org.apache.commons.rng.core.util.NumberFactory;
 abstract class AbstractPcg6432 extends IntProvider {
     /** Size of the seed array. */
     private static final int SEED_SIZE = 2;
+    /** The default increment. */
+    private static final long DEFAULT_INCREMENT = 1442695040888963407L;
 
     /** The state of the LCG. */
     private long state;
@@ -38,11 +40,26 @@ abstract class AbstractPcg6432 extends IntProvider {
     private long increment;
 
     /**
+     * Creates a new instance using a default increment.
+     *
+     * @param seed Initial state.
+     * @since 1.4
+     */
+    AbstractPcg6432(Long seed) {
+        increment = DEFAULT_INCREMENT;
+        state = bump(seed + this.increment);
+    }
+
+    /**
      * Creates a new instance.
      *
      * @param seed Initial seed.
      * If the length is larger than 2, only the first 2 elements will
      * be used; if smaller, the remaining elements will be automatically set.
+     *
+     * <p>The 1st element is used to set the LCG state. The 2nd element is used
+     * to set the LCG increment; the most significant bit
+     * is discarded by left shift and the increment is set to odd.</p>
      */
     AbstractPcg6432(long[] seed) {
         if (seed.length < SEED_SIZE) {
diff --git 
a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRr32.java
 
b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRr32.java
index 27c22b3..0ebce0c 100644
--- 
a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRr32.java
+++ 
b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRr32.java
@@ -29,11 +29,25 @@ package org.apache.commons.rng.core.source32;
  */
 public class PcgXshRr32 extends AbstractPcg6432 {
     /**
+     * Creates a new instance using a default increment.
+     *
+     * @param seed Initial state.
+     * @since 1.4
+     */
+    public PcgXshRr32(Long seed) {
+        super(seed);
+    }
+
+    /**
      * Creates a new instance.
      *
      * @param seed Initial seed.
      * If the length is larger than 2, only the first 2 elements will
      * be used; if smaller, the remaining elements will be automatically set.
+     *
+     * <p>The 1st element is used to set the LCG state. The 2nd element is used
+     * to set the LCG increment; the most significant bit
+     * is discarded by left shift and the increment is set to odd.</p>
      */
     public PcgXshRr32(long[] seed) {
         super(seed);
diff --git 
a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRs32.java
 
b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRs32.java
index c7ee68a..438fc38 100644
--- 
a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRs32.java
+++ 
b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRs32.java
@@ -29,11 +29,25 @@ package org.apache.commons.rng.core.source32;
  */
 public class PcgXshRs32 extends AbstractPcg6432 {
     /**
+     * Creates a new instance using a default increment.
+     *
+     * @param seed Initial state.
+     * @since 1.4
+     */
+    public PcgXshRs32(Long seed) {
+        super(seed);
+    }
+
+    /**
      * Creates a new instance.
      *
      * @param seed Initial seed.
      * If the length is larger than 2, only the first 2 elements will
      * be used; if smaller, the remaining elements will be automatically set.
+     *
+     * <p>The 1st element is used to set the LCG state. The 2nd element is used
+     * to set the LCG increment; the most significant bit
+     * is discarded by left shift and the increment is set to odd.</p>
      */
     public PcgXshRs32(long[] seed) {
         super(seed);
diff --git 
a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/PcgRxsMXs64.java
 
b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/PcgRxsMXs64.java
index 3ac9ddd..e542c2c 100644
--- 
a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/PcgRxsMXs64.java
+++ 
b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/PcgRxsMXs64.java
@@ -32,6 +32,8 @@ import org.apache.commons.rng.core.util.NumberFactory;
 public class PcgRxsMXs64 extends LongProvider {
     /** Size of the seed array. */
     private static final int SEED_SIZE = 2;
+    /** The default increment. */
+    private static final long DEFAULT_INCREMENT = 1442695040888963407L;
 
     /** The state of the LCG. */
     private long state;
@@ -40,11 +42,26 @@ public class PcgRxsMXs64 extends LongProvider {
     private long increment;
 
     /**
+     * Creates a new instance using a default increment.
+     *
+     * @param seed Initial state.
+     * @since 1.4
+     */
+    public PcgRxsMXs64(Long seed) {
+        increment = DEFAULT_INCREMENT;
+        state = bump(seed + this.increment);
+    }
+
+    /**
      * Creates a new instance.
      *
      * @param seed Initial seed.
      * If the length is larger than 2, only the first 2 elements will
      * be used; if smaller, the remaining elements will be automatically set.
+     *
+     * <p>The 1st element is used to set the LCG state. The 2nd element is used
+     * to set the LCG increment; the most significant bit
+     * is discarded by left shift and the increment is set to odd.</p>
      */
     public PcgRxsMXs64(long[] seed) {
         if (seed.length < SEED_SIZE) {
diff --git 
a/commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersList.java 
b/commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersList.java
index 6a0282b..620a5cc 100644
--- 
a/commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersList.java
+++ 
b/commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersList.java
@@ -112,7 +112,9 @@ public final class ProvidersList {
             add(LIST32, new XoShiRo128Plus(new int[] {g.nextInt(), 
g.nextInt(), g.nextInt()}));
             add(LIST32, new XoShiRo128StarStar(new int[] {g.nextInt(), 
g.nextInt(), g.nextInt()}));
             add(LIST32, new PcgXshRr32(new long[] {g.nextLong()}));
+            add(LIST32, new PcgXshRr32(g.nextLong()));
             add(LIST32, new PcgXshRs32(new long[] {g.nextLong()}));
+            add(LIST32, new PcgXshRs32(g.nextLong()));
             add(LIST32, new PcgMcgXshRr32(g.nextLong()));
             add(LIST32, new PcgMcgXshRs32(g.nextLong()));
             // Ensure a high complexity increment is used for the Weyl sequence
@@ -136,6 +138,7 @@ public final class ProvidersList {
             add(LIST64, new XoShiRo512Plus(new long[] {g.nextLong(), 
g.nextLong(), g.nextLong(), g.nextLong()}));
             add(LIST64, new XoShiRo512StarStar(new long[] {g.nextLong(), 
g.nextLong(), g.nextLong(), g.nextLong()}));
             add(LIST64, new PcgRxsMXs64(new long[] {g.nextLong()}));
+            add(LIST64, new PcgRxsMXs64(g.nextLong()));
             add(LIST64, new DotyHumphreySmallFastCounting64(new long[] 
{g.nextLong(), g.nextLong()}));
             add(LIST64, new JenkinsSmallFast64(g.nextLong()));
             add(LIST64, new XoRoShiRo128PlusPlus(new long[] {g.nextLong(), 
g.nextLong()}));
diff --git 
a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRr32Test.java
 
b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRr32Test.java
index b744ac1..e29c165 100644
--- 
a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRr32Test.java
+++ 
b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRr32Test.java
@@ -24,7 +24,7 @@ public class PcgXshRr32Test {
     @Test
     public void testReferenceCode() {
         /*
-         * Tested with respect to pcg_engines::setseq_xsh_rr_64_32 of the C++ 
implementation.
+         * Tested with respect to pcg_engines::setseq_xsh_rr_64_32(x, y) of 
the C++ implementation.
          * See : http://www.pcg-random.org/download.html#cpp-implementation
          */
         final int[] expectedSequence = {
@@ -43,4 +43,25 @@ public class PcgXshRr32Test {
             0x012de1babb3c4104L, 0xc8161b4202294965L
         }));
     }
+
+    @Test
+    public void testReferenceCodeFixedIncrement() {
+        /*
+         * Tested with respect to pcg_engines::setseq_xsh_rr_64_32(x) of the 
C++ implementation.
+         * See : http://www.pcg-random.org/download.html#cpp-implementation
+         */
+        final int[] expectedSequence = {
+            0x0d2d5291, 0x45df90aa, 0xc60f3fb7, 0x06694f16,
+            0x29563e6f, 0x42f46063, 0xf2be5583, 0x30360e91,
+            0x36385531, 0xddd36cd9, 0x5f4a6535, 0x644d10c0,
+            0xaca075d7, 0x33781706, 0x4e1f9f34, 0x0676e286,
+            0xaca5eeb2, 0x7315cc93, 0xa6dfefe2, 0xd480e065,
+            0xda9da26f, 0xda0f27b7, 0x045c0844, 0x22acfa0f,
+            0xcd7ecd75, 0xb97fd692, 0xac96dd03, 0xf59c7174,
+            0x488947fe, 0x64a3d543, 0x90963884, 0x4adee0bb,
+            0x993cf7c0, 0x8545b3f2, 0x409b542d, 0x6bf0a247,
+            0xfd59f9b4, 0x8f50b06e, 0x1bbcf6f5, 0xe1fdd29c,
+        };
+        RandomAssert.assertEquals(expectedSequence, new 
PcgXshRr32(0x012de1babb3c4104L));
+    }
 }
diff --git 
a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRs32Test.java
 
b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRs32Test.java
index 1d8ef51..dd751ff 100644
--- 
a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRs32Test.java
+++ 
b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRs32Test.java
@@ -24,7 +24,7 @@ public class PcgXshRs32Test {
     @Test
     public void testReferenceCode() {
         /*
-         * Tested with respect to pcg_engines::setseq_xsh_rs_64_32 from the 
C++ implementation.
+         * Tested with respect to pcg_engines::setseq_xsh_rs_64_32(x, y) from 
the C++ implementation.
          * See : http://www.pcg-random.org/download.html#cpp-implementation
          */
         final int[] expectedSequence = {
@@ -43,4 +43,25 @@ public class PcgXshRs32Test {
             0x012de1babb3c4104L, 0xc8161b4202294965L
         }));
     }
+
+    @Test
+    public void testReferenceCodeFixedIncrement() {
+        /*
+         * Tested with respect to pcg_engines::setseq_xsh_rs_64_32(x) from the 
C++ implementation.
+         * See : http://www.pcg-random.org/download.html#cpp-implementation
+         */
+        final int[] expectedSequence = {
+            0x5ab2ddd9, 0x215c476c, 0x83c34b11, 0xe2c5e213,
+            0x37979624, 0x303cf5b5, 0xbf2a146e, 0xb0692351,
+            0x49b00de3, 0xd9ded67c, 0x298e2bb9, 0xa20d2287,
+            0xa067cd33, 0x5c10d395, 0x1f8d8bd5, 0x4306b6bc,
+            0x97a3e50b, 0x992e0604, 0x8a982b33, 0x4baa6604,
+            0xefd995eb, 0x0f341c29, 0x080bce32, 0xb22b3de2,
+            0x5fbf47ff, 0x7fc928bf, 0x075a5871, 0x174a0c48,
+            0x72458b67, 0xa869a8c1, 0x64857577, 0xed28377c,
+            0x3ce86b48, 0xa855af8b, 0x6a051d88, 0x23b06c33,
+            0xb3e4afc1, 0xa848c3e4, 0x79f969a6, 0x670e2acb,
+        };
+        RandomAssert.assertEquals(expectedSequence, new 
PcgXshRs32(0x012de1babb3c4104L));
+    }
 }
diff --git 
a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/PcgRxsMXs64Test.java
 
b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/PcgRxsMXs64Test.java
index dac1191..af29eb8 100644
--- 
a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/PcgRxsMXs64Test.java
+++ 
b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/PcgRxsMXs64Test.java
@@ -24,7 +24,7 @@ public class PcgRxsMXs64Test {
     @Test
     public void testReferenceCode() {
         /*
-         * Tested with respect to pcg_engines::setseq_rxs_m_xs_64_64 of the 
C++ implementation.
+         * Tested with respect to pcg_engines::setseq_rxs_m_xs_64_64(x, y) of 
the C++ implementation.
          * See : http://www.pcg-random.org/download.html#cpp-implementation
          */
         final long[] expectedSequence = {
@@ -43,4 +43,25 @@ public class PcgRxsMXs64Test {
             0x012de1babb3c4104L, 0xc8161b4202294965L
         }));
     }
+
+    @Test
+    public void testReferenceCodeFixedIncrement() {
+        /*
+         * Tested with respect to pcg_engines::setseq_rxs_m_xs_64_64(x) of the 
C++ implementation.
+         * See : http://www.pcg-random.org/download.html#cpp-implementation
+         */
+        final long[] expectedSequence = {
+            0xa5ace6c92c5fa6c7L, 0xac02118387228764L, 0xa6e796e49dc36e00L, 
0x4713f32552134368L,
+            0xa2ad36cb4e6b7cc9L, 0x6bbce7db898fa11dL, 0x134cb18300fe9eb0L, 
0x3f705c0d635cbc23L,
+            0x4bd7531b62a59b62L, 0x413cc95f3c3e9952L, 0xbc77749b270d987cL, 
0xd2c74089bc6489f5L,
+            0xc2debc07a31bb1a8L, 0x5163cfcc77ebd4fbL, 0x6f41b5621cba1b2dL, 
0x72dd618ae82f792fL,
+            0x76888898287eeaa2L, 0xf5c7de46ad2739a0L, 0xc9d63bfe7b405a66L, 
0xefc0161a3119efd0L,
+            0xbc7a7e23220b53c8L, 0x6efb5e3e2b510988L, 0xe70ce3d64ed4ee82L, 
0x3e5c15687252a94dL,
+            0x95530066e3a7f3a6L, 0x6c9a303ab74d9a21L, 0x93ff7e36cf46cdeaL, 
0xd5173d3428745856L,
+            0x4fb30e4c6e8bf68eL, 0x6466bbcaf078ad4fL, 0x846768c1bd451c96L, 
0xd9c7d6b4aabce95dL,
+            0x4f789941d453a26fL, 0x802e40798afb9cf9L, 0x4f9fd27240f2303bL, 
0xb9c25cd3e029e4eaL,
+            0x7d8ecedb3334b077L, 0x9011d404cf44b7c7L, 0xe6f26367c52b12a6L, 
0xcbfb6a1dd20f2df4L,
+        };
+        RandomAssert.assertEquals(expectedSequence, new 
PcgRxsMXs64(0x012de1babb3c4104L));
+    }
 }
diff --git 
a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/RandomSourceValues.java
 
b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/RandomSourceValues.java
index 2926bd7..bbcb1be 100644
--- 
a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/RandomSourceValues.java
+++ 
b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/RandomSourceValues.java
@@ -82,6 +82,9 @@ public class RandomSourceValues {
             "XO_RO_SHI_RO_1024_PP",
             "XO_RO_SHI_RO_1024_S",
             "XO_RO_SHI_RO_1024_SS",
+            "PCG_XSH_RR_32_OS",
+            "PCG_XSH_RS_32_OS",
+            "PCG_RXS_M_XS_64_OS",
             })
     private String randomSourceName;
 
diff --git 
a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/core/BaselineSources.java
 
b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/core/BaselineSources.java
index bff6366..78a0dbd 100644
--- 
a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/core/BaselineSources.java
+++ 
b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/core/BaselineSources.java
@@ -104,6 +104,9 @@ public abstract class BaselineSources {
             "XO_RO_SHI_RO_1024_PP",
             "XO_RO_SHI_RO_1024_S",
             "XO_RO_SHI_RO_1024_SS",
+            "PCG_XSH_RR_32_OS",
+            "PCG_XSH_RS_32_OS",
+            "PCG_RXS_M_XS_64_OS",
             })
     private String randomSourceName;
 
diff --git 
a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java
 
b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java
index 9164a2c..65ca02f 100644
--- 
a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java
+++ 
b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java
@@ -542,7 +542,31 @@ public enum RandomSource {
      * </ul>
      * @since 1.3
      */
-    
XO_RO_SHI_RO_1024_SS(ProviderBuilder.RandomSourceInternal.XO_RO_SHI_RO_1024_SS);
+    
XO_RO_SHI_RO_1024_SS(ProviderBuilder.RandomSourceInternal.XO_RO_SHI_RO_1024_SS),
+    /**
+     * Source of randomness is {@link 
org.apache.commons.rng.core.source32.PcgXshRr32}.
+     * <ul>
+     *  <li>Native seed type: {@code Long}.</li>
+     * </ul>
+     * @since 1.4
+     */
+    PCG_XSH_RR_32_OS(ProviderBuilder.RandomSourceInternal.PCG_XSH_RR_32_OS),
+    /**
+     * Source of randomness is {@link 
org.apache.commons.rng.core.source32.PcgXshRs32}.
+     * <ul>
+     *  <li>Native seed type: {@code Long}.</li>
+     * </ul>
+     * @since 1.4
+     */
+    PCG_XSH_RS_32_OS(ProviderBuilder.RandomSourceInternal.PCG_XSH_RS_32_OS),
+    /**
+     * Source of randomness is {@link 
org.apache.commons.rng.core.source64.PcgRxsMXs64}.
+     * <ul>
+     *  <li>Native seed type: {@code Long}.</li>
+     * </ul>
+     * @since 1.4
+     */
+    
PCG_RXS_M_XS_64_OS(ProviderBuilder.RandomSourceInternal.PCG_RXS_M_XS_64_OS);
 
     /** Internal identifier. */
     private final ProviderBuilder.RandomSourceInternal internalIdentifier;
diff --git 
a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
 
b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
index 790b020..5b092fa 100644
--- 
a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
+++ 
b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
@@ -354,7 +354,19 @@ public final class ProviderBuilder {
         /** Source of randomness is {@link XoRoShiRo1024StarStar}. */
         XO_RO_SHI_RO_1024_SS(XoRoShiRo1024StarStar.class,
                              16,
-                             NativeSeedType.LONG_ARRAY);
+                             NativeSeedType.LONG_ARRAY),
+        /** Source of randomness is {@link PcgXshRr32}. */
+        PCG_XSH_RR_32_OS(PcgXshRr32.class,
+                1,
+                NativeSeedType.LONG),
+        /** Source of randomness is {@link PcgXshRs32}. */
+        PCG_XSH_RS_32_OS(PcgXshRs32.class,
+                1,
+                NativeSeedType.LONG),
+        /** Source of randomness is {@link PcgRxsMXs64}. */
+        PCG_RXS_M_XS_64_OS(PcgRxsMXs64.class,
+                1,
+                NativeSeedType.LONG);
 
         /** Source type. */
         private final Class<? extends UniformRandomProvider> rng;
diff --git 
a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersList.java
 
b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersList.java
index 26c87cb..3fcf119 100644
--- 
a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersList.java
+++ 
b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersList.java
@@ -65,6 +65,8 @@ public final class ProvidersList {
             add(LIST32, RandomSource.MSWS, new long[] {687233648L, 
678656564562300L, 0xb5ad4eceda1ce2a9L});
             add(LIST32, RandomSource.SFC_32, new int[] {-23574234, 7654343});
             add(LIST32, RandomSource.XO_SHI_RO_128_PP, new int[] {8796823, 
-3244890, -263842});
+            add(LIST32, RandomSource.PCG_XSH_RR_32_OS, 72346247L);
+            add(LIST32, RandomSource.PCG_XSH_RS_32_OS, -5340832872354L);
             // ... add more here.
 
             // "long"-based RNGs.
@@ -88,6 +90,7 @@ public final class ProvidersList {
             add(LIST64, RandomSource.XO_RO_SHI_RO_1024_PP, new long[] 
{236424345654L, 781544546164721L, -85235476312346L});
             add(LIST64, RandomSource.XO_RO_SHI_RO_1024_S, new long[] 
{-1574314L, 7879874453221215L, -7894343883216L});
             add(LIST64, RandomSource.XO_RO_SHI_RO_1024_SS, new long[] 
{-41514541234654321L, -12146412316546L, 7984134134L});
+            add(LIST64, RandomSource.PCG_RXS_M_XS_64_OS, -34657834534L);
             // ... add more here.
 
             // Do not modify the remaining statements.
diff --git 
a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/RandomSourceInternalParametricTest.java
 
b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/RandomSourceInternalParametricTest.java
index 737b73c..4c8f118 100644
--- 
a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/RandomSourceInternalParametricTest.java
+++ 
b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/RandomSourceInternalParametricTest.java
@@ -97,6 +97,9 @@ public class RandomSourceInternalParametricTest {
         EXPECTED_SEED_BYTES.put(RandomSourceInternal.XO_RO_SHI_RO_1024_PP, 
longBytes * 16);
         EXPECTED_SEED_BYTES.put(RandomSourceInternal.XO_RO_SHI_RO_1024_S, 
longBytes * 16);
         EXPECTED_SEED_BYTES.put(RandomSourceInternal.XO_RO_SHI_RO_1024_SS, 
longBytes * 16);
+        EXPECTED_SEED_BYTES.put(RandomSourceInternal.PCG_XSH_RR_32_OS, 
longBytes);
+        EXPECTED_SEED_BYTES.put(RandomSourceInternal.PCG_XSH_RS_32_OS, 
longBytes);
+        EXPECTED_SEED_BYTES.put(RandomSourceInternal.PCG_RXS_M_XS_64_OS, 
longBytes);
         // ... add more here.
         // Verify the seed byte size is reflected in the enum javadoc for 
RandomSource.
     }

Reply via email to