Reverting commit ffae3bdbb6740e336a223a82a3dd545c24cde7b5 as per Gilles request.
The work on revamping the random packages is perfoemd in the random-ravamp branch. Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/df46ed5e Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/df46ed5e Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/df46ed5e Branch: refs/heads/master Commit: df46ed5edde4aea856cb16b8bc4ab791fef206ef Parents: 7c31eb6 Author: Luc Maisonobe <l...@apache.org> Authored: Sun Jan 17 11:35:25 2016 +0100 Committer: Luc Maisonobe <l...@apache.org> Committed: Sun Jan 17 11:40:27 2016 +0100 ---------------------------------------------------------------------- .../commons/math4/random/AbstractWell.java | 10 +++++---- .../apache/commons/math4/random/Well1024a.java | 22 ++++++++++---------- .../apache/commons/math4/random/Well19937a.java | 6 ++++-- .../apache/commons/math4/random/Well19937c.java | 6 ++++-- .../apache/commons/math4/random/Well44497a.java | 6 ++++-- .../apache/commons/math4/random/Well44497b.java | 6 ++++-- .../apache/commons/math4/random/Well512a.java | 6 ++++-- .../commons/math4/random/Well1024aTest.java | 2 +- .../commons/math4/random/Well19937aTest.java | 2 +- .../commons/math4/random/Well19937cTest.java | 2 +- .../commons/math4/random/Well44497aTest.java | 2 +- .../commons/math4/random/Well44497bTest.java | 2 +- .../commons/math4/random/Well512aTest.java | 2 +- 13 files changed, 43 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/main/java/org/apache/commons/math4/random/AbstractWell.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/random/AbstractWell.java b/src/main/java/org/apache/commons/math4/random/AbstractWell.java index da222fd..7251bcd 100644 --- a/src/main/java/org/apache/commons/math4/random/AbstractWell.java +++ b/src/main/java/org/apache/commons/math4/random/AbstractWell.java @@ -34,12 +34,10 @@ import org.apache.commons.math4.util.FastMath; * @see <a href="http://www.iro.umontreal.ca/~panneton/WELLRNG.html">WELL Random number generator</a> * @since 2.2 */ -public abstract class AbstractWell - extends BaseRandomGenerator - implements Serializable { +public abstract class AbstractWell extends BitsStreamGenerator implements Serializable { /** Serializable version identifier. */ - private static final long serialVersionUID = 20150228L; + private static final long serialVersionUID = 20150223L; /** Current index in the bytes pool. */ protected int index; @@ -135,6 +133,10 @@ public abstract class AbstractWell setSeed(new int[] { (int) (seed >>> 32), (int) (seed & 0xffffffffl) }); } + /** {@inheritDoc} */ + @Override + protected abstract int next(final int bits); + /** Calculate the number of 32-bits blocks. * @param k number of bits in the pool (not necessarily a multiple of 32) * @return the number of 32-bits blocks http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/main/java/org/apache/commons/math4/random/Well1024a.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/random/Well1024a.java b/src/main/java/org/apache/commons/math4/random/Well1024a.java index ff1de07..39153f2 100644 --- a/src/main/java/org/apache/commons/math4/random/Well1024a.java +++ b/src/main/java/org/apache/commons/math4/random/Well1024a.java @@ -16,18 +16,15 @@ */ package org.apache.commons.math4.random; -/** - * This class implements the WELL1024a pseudo-random number generator +/** This class implements the WELL1024a pseudo-random number generator * from François Panneton, Pierre L'Ecuyer and Makoto Matsumoto. - * * <p> * This generator is described in a paper by François Panneton, - * Pierre L'Ecuyer and Makoto Matsumoto - * <a href="http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng.pdf"> - * Improved Long-Period Generators Based on Linear Recurrences Modulo 2</a> - * ACM Transactions on Mathematical Software, 32, 1 (2006). The errata for the paper - * are in <a href="http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng-errata.txt">wellrng-errata.txt</a>. - * </p> + * Pierre L'Ecuyer and Makoto Matsumoto <a + * href="http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng.pdf">Improved + * Long-Period Generators Based on Linear Recurrences Modulo 2</a> ACM + * Transactions on Mathematical Software, 32, 1 (2006). The errata for the paper + * are in <a href="http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng-errata.txt">wellrng-errata.txt</a>.</p> * * @see <a href="http://www.iro.umontreal.ca/~panneton/WELLRNG.html">WELL Random number generator</a> * @since 2.2 @@ -84,7 +81,8 @@ public class Well1024a extends AbstractWell { /** {@inheritDoc} */ @Override - public int nextInt() { + protected int next(final int bits) { + final int indexRm1 = TABLE.getIndexPred(index); final int v0 = v[index]; @@ -102,6 +100,8 @@ public class Well1024a extends AbstractWell { v[indexRm1] = z4; index = indexRm1; - return z4; + return z4 >>> (32 - bits); + } + } http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/main/java/org/apache/commons/math4/random/Well19937a.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/random/Well19937a.java b/src/main/java/org/apache/commons/math4/random/Well19937a.java index d4b877a..856a42d 100644 --- a/src/main/java/org/apache/commons/math4/random/Well19937a.java +++ b/src/main/java/org/apache/commons/math4/random/Well19937a.java @@ -82,7 +82,7 @@ public class Well19937a extends AbstractWell { /** {@inheritDoc} */ @Override - public int nextInt() { + protected int next(final int bits) { final int indexRm1 = TABLE.getIndexPred(index); final int indexRm2 = TABLE.getIndexPred2(index); @@ -103,6 +103,8 @@ public class Well19937a extends AbstractWell { v[indexRm2] &= 0x80000000; index = indexRm1; - return z4; + return z4 >>> (32 - bits); + } + } http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/main/java/org/apache/commons/math4/random/Well19937c.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/random/Well19937c.java b/src/main/java/org/apache/commons/math4/random/Well19937c.java index c15350d..1ff77c7 100644 --- a/src/main/java/org/apache/commons/math4/random/Well19937c.java +++ b/src/main/java/org/apache/commons/math4/random/Well19937c.java @@ -82,7 +82,7 @@ public class Well19937c extends AbstractWell { /** {@inheritDoc} */ @Override - public int nextInt() { + protected int next(final int bits) { final int indexRm1 = TABLE.getIndexPred(index); final int indexRm2 = TABLE.getIndexPred2(index); @@ -108,6 +108,8 @@ public class Well19937c extends AbstractWell { z4 ^= (z4 << 7) & 0xe46e1700; z4 ^= (z4 << 15) & 0x9b868000; - return z4; + return z4 >>> (32 - bits); + } + } http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/main/java/org/apache/commons/math4/random/Well44497a.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/random/Well44497a.java b/src/main/java/org/apache/commons/math4/random/Well44497a.java index 667d458..1c7765f 100644 --- a/src/main/java/org/apache/commons/math4/random/Well44497a.java +++ b/src/main/java/org/apache/commons/math4/random/Well44497a.java @@ -81,7 +81,7 @@ public class Well44497a extends AbstractWell { /** {@inheritDoc} */ @Override - public int nextInt() { + protected int next(final int bits) { final int indexRm1 = TABLE.getIndexPred(index); final int indexRm2 = TABLE.getIndexPred2(index); @@ -105,6 +105,8 @@ public class Well44497a extends AbstractWell { v[indexRm2] &= 0xFFFF8000; index = indexRm1; - return z4; + return z4 >>> (32 - bits); + } + } http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/main/java/org/apache/commons/math4/random/Well44497b.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/random/Well44497b.java b/src/main/java/org/apache/commons/math4/random/Well44497b.java index 91c506f..551da47 100644 --- a/src/main/java/org/apache/commons/math4/random/Well44497b.java +++ b/src/main/java/org/apache/commons/math4/random/Well44497b.java @@ -81,7 +81,7 @@ public class Well44497b extends AbstractWell { /** {@inheritDoc} */ @Override - public int nextInt() { + protected int next(final int bits) { // compute raw value given by WELL44497a generator // which is NOT maximally-equidistributed @@ -112,6 +112,8 @@ public class Well44497b extends AbstractWell { z4 ^= (z4 << 7) & 0x93dd1400; z4 ^= (z4 << 15) & 0xfa118000; - return z4; + return z4 >>> (32 - bits); + } + } http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/main/java/org/apache/commons/math4/random/Well512a.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/random/Well512a.java b/src/main/java/org/apache/commons/math4/random/Well512a.java index 55fc6db..391bb2f 100644 --- a/src/main/java/org/apache/commons/math4/random/Well512a.java +++ b/src/main/java/org/apache/commons/math4/random/Well512a.java @@ -82,7 +82,7 @@ public class Well512a extends AbstractWell { /** {@inheritDoc} */ @Override - public int nextInt() { + protected int next(final int bits) { final int indexRm1 = TABLE.getIndexPred(index); @@ -101,6 +101,8 @@ public class Well512a extends AbstractWell { v[indexRm1] = z4; index = indexRm1; - return z4; + return z4 >>> (32 - bits); + } + } http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/test/java/org/apache/commons/math4/random/Well1024aTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/math4/random/Well1024aTest.java b/src/test/java/org/apache/commons/math4/random/Well1024aTest.java index 242c24d..d5e0e67 100644 --- a/src/test/java/org/apache/commons/math4/random/Well1024aTest.java +++ b/src/test/java/org/apache/commons/math4/random/Well1024aTest.java @@ -21,7 +21,7 @@ import org.apache.commons.math4.random.Well1024a; import org.junit.Assert; import org.junit.Test; -public class Well1024aTest extends BaseRandomGeneratorTest { +public class Well1024aTest extends RandomGeneratorAbstractTest { @Override protected RandomGenerator makeGenerator() { http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/test/java/org/apache/commons/math4/random/Well19937aTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/math4/random/Well19937aTest.java b/src/test/java/org/apache/commons/math4/random/Well19937aTest.java index 00ff92b..97f05f4 100644 --- a/src/test/java/org/apache/commons/math4/random/Well19937aTest.java +++ b/src/test/java/org/apache/commons/math4/random/Well19937aTest.java @@ -21,7 +21,7 @@ import org.apache.commons.math4.random.Well19937a; import org.junit.Assert; import org.junit.Test; -public class Well19937aTest extends BaseRandomGeneratorTest { +public class Well19937aTest extends RandomGeneratorAbstractTest { @Override public RandomGenerator makeGenerator() { http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/test/java/org/apache/commons/math4/random/Well19937cTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/math4/random/Well19937cTest.java b/src/test/java/org/apache/commons/math4/random/Well19937cTest.java index a97cbcc..cfffcd1 100644 --- a/src/test/java/org/apache/commons/math4/random/Well19937cTest.java +++ b/src/test/java/org/apache/commons/math4/random/Well19937cTest.java @@ -21,7 +21,7 @@ import org.apache.commons.math4.random.Well19937c; import org.junit.Assert; import org.junit.Test; -public class Well19937cTest extends BaseRandomGeneratorTest { +public class Well19937cTest extends RandomGeneratorAbstractTest { @Override public RandomGenerator makeGenerator() { http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/test/java/org/apache/commons/math4/random/Well44497aTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/math4/random/Well44497aTest.java b/src/test/java/org/apache/commons/math4/random/Well44497aTest.java index 426f3cd..e6dc96f 100644 --- a/src/test/java/org/apache/commons/math4/random/Well44497aTest.java +++ b/src/test/java/org/apache/commons/math4/random/Well44497aTest.java @@ -21,7 +21,7 @@ import org.apache.commons.math4.random.Well44497a; import org.junit.Assert; import org.junit.Test; -public class Well44497aTest extends BaseRandomGeneratorTest { +public class Well44497aTest extends RandomGeneratorAbstractTest { @Override public RandomGenerator makeGenerator() { http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/test/java/org/apache/commons/math4/random/Well44497bTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/math4/random/Well44497bTest.java b/src/test/java/org/apache/commons/math4/random/Well44497bTest.java index 6ce8d79..7f3dee1 100644 --- a/src/test/java/org/apache/commons/math4/random/Well44497bTest.java +++ b/src/test/java/org/apache/commons/math4/random/Well44497bTest.java @@ -21,7 +21,7 @@ import org.apache.commons.math4.random.Well44497b; import org.junit.Assert; import org.junit.Test; -public class Well44497bTest extends BaseRandomGeneratorTest { +public class Well44497bTest extends RandomGeneratorAbstractTest { @Override public RandomGenerator makeGenerator() { http://git-wip-us.apache.org/repos/asf/commons-math/blob/df46ed5e/src/test/java/org/apache/commons/math4/random/Well512aTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/math4/random/Well512aTest.java b/src/test/java/org/apache/commons/math4/random/Well512aTest.java index 3f63688..192d7d5 100644 --- a/src/test/java/org/apache/commons/math4/random/Well512aTest.java +++ b/src/test/java/org/apache/commons/math4/random/Well512aTest.java @@ -21,7 +21,7 @@ import org.apache.commons.math4.random.Well512a; import org.junit.Assert; import org.junit.Test; -public class Well512aTest extends BaseRandomGeneratorTest { +public class Well512aTest extends RandomGeneratorAbstractTest { @Override public RandomGenerator makeGenerator() {