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/30 10:16:20 UTC
[commons-rng] 02/04: RNG-118: RandomSource values for XoRoShiRo
PlusPlus generators.
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 19b7bde700e6c652e4425c8edbbc5e9ecf1c0a64
Author: aherbert <ah...@apache.org>
AuthorDate: Fri Sep 27 12:13:28 2019 +0100
RNG-118: RandomSource values for XoRoShiRo PlusPlus generators.
XO_SHI_RO_128_PP
XO_RO_SHI_RO_128_PP
XO_SHI_RO_256_PP
XO_SHI_RO_512_PP
XO_RO_SHI_RO_1024_PP
XO_RO_SHI_RO_1024_S
XO_RO_SHI_RO_1024_SS
---
.../commons/rng/examples/jmh/BaselineSources.java | 7 +++
.../rng/examples/jmh/RandomSourceValues.java | 7 +++
.../apache/commons/rng/simple/RandomSource.java | 58 +++++++++++++++++++++-
.../rng/simple/internal/ProviderBuilder.java | 37 +++++++++++++-
.../apache/commons/rng/simple/ProvidersList.java | 7 +++
.../RandomSourceInternalParametricTest.java | 7 +++
6 files changed, 121 insertions(+), 2 deletions(-)
diff --git a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/BaselineSources.java b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/BaselineSources.java
index 7961594..0c754fc 100644
--- a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/BaselineSources.java
+++ b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/BaselineSources.java
@@ -97,6 +97,13 @@ public abstract class BaselineSources {
"SFC_64",
"JSF_32",
"JSF_64",
+ "XO_SHI_RO_128_PP",
+ "XO_RO_SHI_RO_128_PP",
+ "XO_SHI_RO_256_PP",
+ "XO_SHI_RO_512_PP",
+ "XO_RO_SHI_RO_1024_PP",
+ "XO_RO_SHI_RO_1024_S",
+ "XO_RO_SHI_RO_1024_SS",
})
private String randomSourceName;
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 db643e5..2926bd7 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
@@ -75,6 +75,13 @@ public class RandomSourceValues {
"SFC_64",
"JSF_32",
"JSF_64",
+ "XO_SHI_RO_128_PP",
+ "XO_RO_SHI_RO_128_PP",
+ "XO_SHI_RO_256_PP",
+ "XO_SHI_RO_512_PP",
+ "XO_RO_SHI_RO_1024_PP",
+ "XO_RO_SHI_RO_1024_S",
+ "XO_RO_SHI_RO_1024_SS",
})
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 b98f060..33674b4 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
@@ -458,7 +458,63 @@ public enum RandomSource {
* <li>Native seed type: {@code Long}.</li>
* </ul>
*/
- JSF_64(ProviderBuilder.RandomSourceInternal.JSF_64);
+ JSF_64(ProviderBuilder.RandomSourceInternal.JSF_64),
+ /**
+ * Source of randomness is {@link org.apache.commons.rng.core.source32.XoShiRo128PlusPlus}.
+ * <ul>
+ * <li>Native seed type: {@code int[]}.</li>
+ * <li>Native seed size: 4.</li>
+ * </ul>
+ */
+ XO_SHI_RO_128_PP(ProviderBuilder.RandomSourceInternal.XO_SHI_RO_128_PP),
+ /**
+ * Source of randomness is {@link org.apache.commons.rng.core.source64.XoRoShiRo128PlusPlus}.
+ * <ul>
+ * <li>Native seed type: {@code long[]}.</li>
+ * <li>Native seed size: 2.</li>
+ * </ul>
+ */
+ XO_RO_SHI_RO_128_PP(ProviderBuilder.RandomSourceInternal.XO_RO_SHI_RO_128_PP),
+ /**
+ * Source of randomness is {@link org.apache.commons.rng.core.source64.XoShiRo256PlusPlus}.
+ * <ul>
+ * <li>Native seed type: {@code long[]}.</li>
+ * <li>Native seed size: 4.</li>
+ * </ul>
+ */
+ XO_SHI_RO_256_PP(ProviderBuilder.RandomSourceInternal.XO_SHI_RO_256_PP),
+ /**
+ * Source of randomness is {@link org.apache.commons.rng.core.source64.XoShiRo512PlusPlus}.
+ * <ul>
+ * <li>Native seed type: {@code long[]}.</li>
+ * <li>Native seed size: 8.</li>
+ * </ul>
+ */
+ XO_SHI_RO_512_PP(ProviderBuilder.RandomSourceInternal.XO_SHI_RO_512_PP),
+ /**
+ * Source of randomness is {@link org.apache.commons.rng.core.source64.XoRoShiRo1024PlusPlus}.
+ * <ul>
+ * <li>Native seed type: {@code long[]}.</li>
+ * <li>Native seed size: 16.</li>
+ * </ul>
+ */
+ XO_RO_SHI_RO_1024_PP(ProviderBuilder.RandomSourceInternal.XO_RO_SHI_RO_1024_PP),
+ /**
+ * Source of randomness is {@link org.apache.commons.rng.core.source64.XoRoShiRo1024Star}.
+ * <ul>
+ * <li>Native seed type: {@code long[]}.</li>
+ * <li>Native seed size: 16.</li>
+ * </ul>
+ */
+ XO_RO_SHI_RO_1024_S(ProviderBuilder.RandomSourceInternal.XO_RO_SHI_RO_1024_S),
+ /**
+ * Source of randomness is {@link org.apache.commons.rng.core.source64.XoRoShiRo1024StarStar}.
+ * <ul>
+ * <li>Native seed type: {@code long[]}.</li>
+ * <li>Native seed size: 16.</li>
+ * </ul>
+ */
+ XO_RO_SHI_RO_1024_SS(ProviderBuilder.RandomSourceInternal.XO_RO_SHI_RO_1024_SS);
/** 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 1739ea5..4c6f0ef 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
@@ -37,6 +37,7 @@ import org.apache.commons.rng.core.source32.KISSRandom;
import org.apache.commons.rng.core.source32.XoRoShiRo64Star;
import org.apache.commons.rng.core.source32.XoRoShiRo64StarStar;
import org.apache.commons.rng.core.source32.XoShiRo128Plus;
+import org.apache.commons.rng.core.source32.XoShiRo128PlusPlus;
import org.apache.commons.rng.core.source32.XoShiRo128StarStar;
import org.apache.commons.rng.core.source32.PcgXshRr32;
import org.apache.commons.rng.core.source32.PcgXshRs32;
@@ -48,12 +49,18 @@ import org.apache.commons.rng.core.source64.SplitMix64;
import org.apache.commons.rng.core.source64.XorShift1024Star;
import org.apache.commons.rng.core.source64.XorShift1024StarPhi;
import org.apache.commons.rng.core.source64.TwoCmres;
+import org.apache.commons.rng.core.source64.XoRoShiRo1024PlusPlus;
+import org.apache.commons.rng.core.source64.XoRoShiRo1024Star;
+import org.apache.commons.rng.core.source64.XoRoShiRo1024StarStar;
import org.apache.commons.rng.core.source64.MersenneTwister64;
import org.apache.commons.rng.core.source64.XoRoShiRo128Plus;
+import org.apache.commons.rng.core.source64.XoRoShiRo128PlusPlus;
import org.apache.commons.rng.core.source64.XoRoShiRo128StarStar;
import org.apache.commons.rng.core.source64.XoShiRo256Plus;
+import org.apache.commons.rng.core.source64.XoShiRo256PlusPlus;
import org.apache.commons.rng.core.source64.XoShiRo256StarStar;
import org.apache.commons.rng.core.source64.XoShiRo512Plus;
+import org.apache.commons.rng.core.source64.XoShiRo512PlusPlus;
import org.apache.commons.rng.core.source64.XoShiRo512StarStar;
import org.apache.commons.rng.core.source64.PcgRxsMXs64;
import org.apache.commons.rng.core.source64.DotyHumphreySmallFastCounting64;
@@ -319,7 +326,35 @@ public final class ProviderBuilder {
/** Source of randomness is {@link JenkinsSmallFast64}. */
JSF_64(JenkinsSmallFast64.class,
1,
- NativeSeedType.LONG);
+ NativeSeedType.LONG),
+ /** Source of randomness is {@link XoShiRo128PlusPlus}. */
+ XO_SHI_RO_128_PP(XoShiRo128PlusPlus.class,
+ 4,
+ NativeSeedType.INT_ARRAY),
+ /** Source of randomness is {@link XoRoShiRo128PlusPlus}. */
+ XO_RO_SHI_RO_128_PP(XoRoShiRo128PlusPlus.class,
+ 2,
+ NativeSeedType.LONG_ARRAY),
+ /** Source of randomness is {@link XoShiRo256PlusPlus}. */
+ XO_SHI_RO_256_PP(XoShiRo256PlusPlus.class,
+ 4,
+ NativeSeedType.LONG_ARRAY),
+ /** Source of randomness is {@link XoShiRo512PlusPlus}. */
+ XO_SHI_RO_512_PP(XoShiRo512PlusPlus.class,
+ 8,
+ NativeSeedType.LONG_ARRAY),
+ /** Source of randomness is {@link XoRoShiRo1024PlusPlus}. */
+ XO_RO_SHI_RO_1024_PP(XoRoShiRo1024PlusPlus.class,
+ 16,
+ NativeSeedType.LONG_ARRAY),
+ /** Source of randomness is {@link XoRoShiRo1024Star}. */
+ XO_RO_SHI_RO_1024_S(XoRoShiRo1024Star.class,
+ 16,
+ NativeSeedType.LONG_ARRAY),
+ /** Source of randomness is {@link XoRoShiRo1024StarStar}. */
+ XO_RO_SHI_RO_1024_SS(XoRoShiRo1024StarStar.class,
+ 16,
+ NativeSeedType.LONG_ARRAY);
/** 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 3cc655d..26c87cb 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
@@ -64,6 +64,7 @@ public final class ProvidersList {
// it will not output random data.
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 more here.
// "long"-based RNGs.
@@ -81,6 +82,12 @@ public final class ProvidersList {
add(LIST64, RandomSource.XO_SHI_RO_512_SS, new long[] {123L, -654654L, 45646789L});
add(LIST64, RandomSource.PCG_RXS_M_XS_64, new long[] {42088L, 69271L});
add(LIST64, RandomSource.SFC_64, new long[] {-2357423478979842L, 76543434515L});
+ add(LIST64, RandomSource.XO_RO_SHI_RO_128_PP, new long[] {789741321465L, -461321684612L, -12301654794L});
+ add(LIST64, RandomSource.XO_SHI_RO_256_PP, new long[] {2374243L, -8097397345383L, -223479293943L});
+ add(LIST64, RandomSource.XO_SHI_RO_512_PP, new long[] {-1210684761321465L, -485132198745L, 89942134798523L});
+ 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 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 e58f4ff..737b73c 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
@@ -90,6 +90,13 @@ public class RandomSourceInternalParametricTest {
EXPECTED_SEED_BYTES.put(RandomSourceInternal.SFC_64, longBytes * 3);
EXPECTED_SEED_BYTES.put(RandomSourceInternal.JSF_32, intBytes * 1);
EXPECTED_SEED_BYTES.put(RandomSourceInternal.JSF_64, longBytes * 1);
+ EXPECTED_SEED_BYTES.put(RandomSourceInternal.XO_SHI_RO_128_PP, intBytes * 4);
+ EXPECTED_SEED_BYTES.put(RandomSourceInternal.XO_RO_SHI_RO_128_PP, longBytes * 2);
+ EXPECTED_SEED_BYTES.put(RandomSourceInternal.XO_SHI_RO_256_PP, longBytes * 4);
+ EXPECTED_SEED_BYTES.put(RandomSourceInternal.XO_SHI_RO_512_PP, longBytes * 8);
+ 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);
// ... add more here.
// Verify the seed byte size is reflected in the enum javadoc for RandomSource.
}