http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/source64/MersenneTwister64.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/source64/MersenneTwister64.java b/src/main/java/org/apache/commons/math4/rng/internal/source64/MersenneTwister64.java deleted file mode 100644 index 0280842..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/source64/MersenneTwister64.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.source64; - -import java.util.Arrays; -import org.apache.commons.math4.exception.InsufficientDataException; -import org.apache.commons.math4.rng.internal.util.NumberFactory; - -/** - * This class provides the 64-bits version of the originally 32-bits - * {@link org.apache.commons.math4.rng.internal.source32.MersenneTwister - * Mersenne Twister}. - * - * <p> - * This class is mainly a Java port of - * <a href="http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt64.html"> - * the 2014/2/23 version of the generator - * </a> written in C by Takuji Nishimura and Makoto Matsumoto. - * </p> - * - * <p> - * Here is their original copyright: - * </p> - * - * <table border="0" width="80%" cellpadding="10" align="center" bgcolor="#E0E0E0"> - * <tr><td>Copyright (C) 2004, Makoto Matsumoto and Takuji Nishimura, - * All rights reserved.</td></tr> - * - * <tr><td>Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * <ol> - * <li>Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer.</li> - * <li>Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution.</li> - * <li>The names of its contributors may not be used to endorse or promote - * products derived from this software without specific prior written - * permission.</li> - * </ol></td></tr> - * - * <tr><td><strong>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE.</strong></td></tr> - * </table> - * - * @since 4.0 - */ -public class MersenneTwister64 extends LongProvider { - /** Size of the bytes pool. */ - private static final int NN = 312; - /** Period second parameter. */ - private static final int MM = 156; - /** X * MATRIX_A for X = {0, 1}. */ - private static final long[] MAG01 = { 0x0, 0xb5026f5aa96619e9L }; - /** Most significant 33 bits. */ - private static final long UM = 0xffffffff80000000L; - /** Least significant 31 bits. */ - private static final long LM = 0x7fffffffL; - /** Bytes pool. */ - private long[] mt = new long[NN]; - /** Current index in the bytes pool. */ - private int mti; - - /** - * Creates a new random number generator. - * - * @param seed Initial seed. - */ - public MersenneTwister64(long[] seed) { - setSeedInternal(seed); - } - - /** {@inheritDoc} */ - @Override - protected byte[] getStateInternal() { - final long[] s = Arrays.copyOf(mt, NN + 1); - s[NN] = mti; - - return NumberFactory.makeByteArray(s); - } - - /** {@inheritDoc} */ - @Override - protected void setStateInternal(byte[] s) { - if (s.length != (NN + 1) * 8) { - throw new InsufficientDataException(); - } - - final long[] tmp = NumberFactory.makeLongArray(s); - - System.arraycopy(tmp, 0, mt, 0, NN); - mti = (int) tmp[NN]; - } - - /** - * Reinitializes the generator as if just built with the given seed. - * - * @param seed Initial seed. - */ - private void setSeedInternal(long[] seed) { - initState(19650218L); - - int i = 1; - int j = 0; - - for (int k = Math.max(NN, seed.length); k != 0; k--) { - final long mm1 = mt[i - 1]; - mt[i] = (mt[i] ^ ((mm1 ^ (mm1 >>> 62)) * 0x369dea0f31a53f85L)) + seed[j] + j; // non linear - i++; - j++; - if (i >= NN) { - mt[0] = mt[NN - 1]; - i = 1; - } - if (j >= seed.length) { - j = 0; - } - } - for (int k = NN - 1; k != 0; k--) { - final long mm1 = mt[i - 1]; - mt[i] = (mt[i] ^ ((mm1 ^ (mm1 >>> 62)) * 0x27bb2ee687b0b0fdL)) - i; // non linear - i++; - if (i >= NN) { - mt[0] = mt[NN - 1]; - i = 1; - } - } - - mt[0] = 0x8000000000000000L; // MSB is 1; assuring non-zero initial array - } - - /** - * Initialize the internal state of this instance. - * - * @param seed Seed. - */ - private void initState(long seed) { - mt[0] = seed; - for (mti = 1; mti < NN; mti++) { - final long mm1 = mt[mti - 1]; - mt[mti] = 0x5851f42d4c957f2dL * (mm1 ^ (mm1 >>> 62)) + mti; - } - } - - /** {@inheritDoc} */ - @Override - public long next() { - long x; - - if (mti >= NN) { // generate NN words at one time - for (int i = 0; i < NN - MM; i++) { - x = (mt[i] & UM) | (mt[i + 1] & LM); - mt[i] = mt[i + MM] ^ (x >>> 1) ^ MAG01[(int)(x & 0x1L)]; - } - for (int i = NN - MM; i < NN - 1; i++) { - x = (mt[i] & UM) | (mt[i + 1] & LM); - mt[i] = mt[ i + (MM - NN)] ^ (x >>> 1) ^ MAG01[(int)(x & 0x1L)]; - } - - x = (mt[NN - 1] & UM) | (mt[0] & LM); - mt[NN - 1] = mt[MM - 1] ^ (x >>> 1) ^ MAG01[(int)(x & 0x1L)]; - - mti = 0; - } - - x = mt[mti++]; - - x ^= (x >>> 29) & 0x5555555555555555L; - x ^= (x << 17) & 0x71d67fffeda60000L; - x ^= (x << 37) & 0xfff7eee000000000L; - x ^= x >>> 43; - - return x; - } -}
http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/source64/RandomLongSource.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/source64/RandomLongSource.java b/src/main/java/org/apache/commons/math4/rng/internal/source64/RandomLongSource.java deleted file mode 100644 index 0daa068..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/source64/RandomLongSource.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.commons.math4.rng.internal.source64; - -/** - * Source of randomness that generate values of type {@code long}. - * - * @since 4.0 - */ -public interface RandomLongSource { - /** - * @return the next random value. - */ - long next(); -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/source64/SplitMix64.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/source64/SplitMix64.java b/src/main/java/org/apache/commons/math4/rng/internal/source64/SplitMix64.java deleted file mode 100644 index 086bd03..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/source64/SplitMix64.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.commons.math4.rng.internal.source64; - -import org.apache.commons.math4.exception.InsufficientDataException; -import org.apache.commons.math4.rng.internal.util.NumberFactory; - -/** - * A fast RNG, with 64 bits of state, that can be used to initialize the - * state of other generators. - * - * @see <a href="http://xorshift.di.unimi.it/splitmix64.c"> - * Original source code</a> - * - * @since 4.0 - */ -public class SplitMix64 extends LongProvider { - /** State. */ - private long state; - - /** - * Creates a new instance. - * - * @param seed Initial seed. - */ - public SplitMix64(Long seed) { - setSeedInternal(seed); - } - - /** - * Seeds the RNG. - * - * @param seed Seed. - */ - private void setSeedInternal(Long seed) { - state = seed; - } - - /** {@inheritDoc} */ - @Override - public long next() { - long z = state += 0x9e3779b97f4a7c15L; - z = (z ^ (z >>> 30)) * 0xbf58476d1ce4e5b9L; - z = (z ^ (z >>> 27)) * 0x94d049bb133111ebL; - return z ^ (z >>> 31); - } - - /** {@inheritDoc} */ - @Override - protected byte[] getStateInternal() { - return NumberFactory.makeByteArray(state); - } - - /** {@inheritDoc} */ - @Override - protected void setStateInternal(byte[] s) { - if (s.length != 8) { - throw new InsufficientDataException(); - } - - state = NumberFactory.makeLong(s); - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/source64/TwoCmres.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/source64/TwoCmres.java b/src/main/java/org/apache/commons/math4/rng/internal/source64/TwoCmres.java deleted file mode 100644 index d6fdcd6..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/source64/TwoCmres.java +++ /dev/null @@ -1,310 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.commons.math4.rng.internal.source64; - -import java.util.List; -import java.util.ArrayList; -import org.apache.commons.math4.exception.MathInternalError; -import org.apache.commons.math4.exception.OutOfRangeException; -import org.apache.commons.math4.exception.InsufficientDataException; -import org.apache.commons.math4.rng.internal.util.NumberFactory; - -/** - * Random number generator designed by Mark D. Overton. - * <p> - * It is one of the many generators described by the author in the following article series: - * <ul> - * <li><a href="http://www.drdobbs.com/tools/fast-high-quality-parallel-random-number/229625477">Part one</a></li> - * <li><a href="http://www.drdobbs.com/tools/fast-high-quality-parallel-random-number/231000484">Part two</a></li> - * </ul> - * </p> - * - * @since 4.0 - */ -public class TwoCmres extends LongProvider { - /** A small positive integer. */ - private static final byte SEED_GUARD = 9; - /** Factory of instances of this class. Singleton. */ - private static final Cmres.Factory FACTORY = new Cmres.Factory(); - /** First subcycle generator. */ - private final Cmres x; - /** Second subcycle generator. */ - private final Cmres y; - /** State of first subcycle generator. */ - private long xx; - /** State of second subcycle generator. */ - private long yy; - - /** - * Creates a new instance. - * - * @param seed Initial seed. - * @param x First subcycle generator. - * @param y Second subcycle generator. - * @throws InsufficientDataException if {@code x == y}. - */ - private TwoCmres(int seed, - Cmres x, - Cmres y) { - if (x == y) { - throw new InsufficientDataException(); - } - this.x = x; - this.y = y; - setSeedInternal(seed); - } - - /** - * Creates a new instance. - * - * @param seed Seed. - */ - public TwoCmres(Integer seed) { - this(seed, 0, 1); - } - - /** - * Creates a new instance. - * - * @param seed Seed. - * @param i Table entry for first subcycle generator. - * @param j Table entry for second subcycle generator. - * @throws InsufficientDataException if {@code i == j}. - * @throws OutOfRangeException if {@code i < 0} or - * {@code i >= numberOfSubcycleGenerators()}. - * @throws OutOfRangeException if {@code j < 0} or - * {@code j >= numberOfSubcycleGenerators()}. - */ - public TwoCmres(Integer seed, - int i, - int j) { - this(seed, FACTORY.get(i), FACTORY.get(j)); - } - - /** {@inheritDoc} */ - @Override - public long next() { - xx = x.transform(xx); - yy = y.transform(yy); - - return xx + yy; - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return super.toString() + " (" + x + " + " + y + ")"; - } - - /** - * @return the number of subcycle generators. - */ - public static int numberOfSubcycleGenerators() { - return FACTORY.numberOfSubcycleGenerators(); - } - - /** {@inheritDoc} */ - @Override - protected byte[] getStateInternal() { - return NumberFactory.makeByteArray(new long[] { xx, yy }); - } - - /** {@inheritDoc} */ - @Override - protected void setStateInternal(byte[] s) { - if (s.length != 16) { - throw new InsufficientDataException(); - } - - final long[] state = NumberFactory.makeLongArray(s); - xx = state[0]; - yy = state[1]; - } - - /** - * @param seed Seed. - */ - private void setSeedInternal(int seed) { - // The seeding procedure consists in going away from some - // point known to be in the cycle. - // The total number of calls to the "transform" method will - // not exceed about 130,000 (which is negligible as seeding - // will not occur more than once in normal usage). - - // Make two positive 16-bits integers. - final long s = NumberFactory.makeLong(0, seed); // s >= 0 - final int xMax = (int) (s & 0xffff + SEED_GUARD); - final int yMax = (int) ((s >> 16) + SEED_GUARD); - - if (xMax < 0 || - yMax < 0) { - throw new MathInternalError(); - } - - xx = x.getStart(); - for (int i = xMax; i > 0; i--) { - xx = x.transform(xx); - } - - yy = y.getStart(); - for (int i = yMax; i > 0; i--) { - yy = y.transform(yy); - } - } - - /** - * Subcycle generator. - * Class is immutable. - */ - static class Cmres { - /** Cycle start. */ - private final int start; - /** Multiplier. */ - private final long multiply; - /** Rotation. */ - private final int rotate; - - /** - * @param multiply Multiplier. - * @param rotate Positive number. Must be in {@code [0, 64]}. - * @param start Cycle start. - */ - Cmres(long multiply, - int rotate, - int start) { - this.multiply = multiply; - this.rotate = rotate; - this.start = start; - } - - /** {@inheritDoc} */ - @Override - public String toString() { - final String sep = ", "; - // Use hexadecimal for "multiplier" field. - final String m = String.format((java.util.Locale) null, "0x%016xL", multiply); - return "Cmres: [" + m + sep + rotate + sep + start + "]"; - } - - /** - * @return the multiplier. - */ - public long getMultiply() { - return multiply; - } - - /** - * @return the cycle start. - */ - public int getStart() { - return start; - } - - /** - * @param state Current state. - * @return the new state. - */ - long transform(long state) { - long s = state; - s *= multiply; - s = rotl(s); - s -= state; - return s; - } - - /** - * @param state State. - * @return the rotated state. - */ - private long rotl(long state) { - return (state << rotate) | (state >>> (64 - rotate)); - } - - /** Factory. */ - static class Factory { - /** List of good "Cmres" subcycle generators. */ - private static final List<Cmres> TABLE = new ArrayList<Cmres>(); - - /** - * Populates the table. - * It lists parameters known to be good (provided in - * the article referred to above). - * To maintain compatibility, new entries must be added - * only at the end of the table. - */ - static { - add(0xedce446814d3b3d9L, 33, 0x13b572e7); - add(0xc5b3cf786c806df7L, 33, 0x13c8e18a); - add(0xdd91bbb8ab9e0e65L, 31, 0x06dd03a6); - add(0x7b69342c0790221dL, 31, 0x1646bb8b); - add(0x0c72c0d18614c32bL, 33, 0x06014a3d); - add(0xd8d98c13bebe26c9L, 33, 0x014e8475); - add(0xcb039dc328bbc40fL, 31, 0x008684bd); - add(0x858c5ef3c021ed2fL, 32, 0x0dc8d622); - add(0x4c8be96bfc23b127L, 33, 0x0b6b20cc); - add(0x11eab77f808cf641L, 32, 0x06534421); - add(0xbc9bd78810fd28fdL, 31, 0x1d9ba40d); - add(0x0f1505c780688cb5L, 33, 0x0b7b7b67); - add(0xadc174babc2053afL, 31, 0x267f4197); - add(0x900b6b82b31686d9L, 31, 0x023c6985); - // Add new entries here. - } - - /** - * @return the number of subcycle generators. - */ - int numberOfSubcycleGenerators() { - return TABLE.size(); - } - - /** - * @param index Index into the list of available generators. - * @return the subcycle generator entry at index {@code index}. - */ - Cmres get(int index) { - if (index < 0 || - index >= TABLE.size()) { - throw new OutOfRangeException(index, 0, TABLE.size()); - } - - return TABLE.get(index); - } - - /** - * Adds an entry to the {@link Factory#TABLE}. - * - * @param multiply Multiplier. - * @param rotate Rotate. - * @param start Cycle start. - */ - private static void add(long multiply, - int rotate, - int start) { - // Sanity check: if there are duplicates, the class initialization - // will fail (and the JVM will report "NoClassDefFoundError"). - for (Cmres sg : TABLE) { - if (multiply == sg.getMultiply()) { - throw new MathInternalError(); - } - } - - TABLE.add(new Cmres(multiply, rotate, start)); - } - } - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/source64/XorShift1024Star.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/source64/XorShift1024Star.java b/src/main/java/org/apache/commons/math4/rng/internal/source64/XorShift1024Star.java deleted file mode 100644 index c6bcfaa..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/source64/XorShift1024Star.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.commons.math4.rng.internal.source64; - -import java.util.Arrays; -import org.apache.commons.math4.exception.InsufficientDataException; -import org.apache.commons.math4.rng.internal.util.NumberFactory; - -/** - * A fast RNG. - * - * @see <a href="http://xorshift.di.unimi.it/xorshift1024star.c"> - * Original source code</a> - * - * @since 4.0 - */ -public class XorShift1024Star extends LongProvider { - /** Size of the state vector. */ - private static final int SEED_SIZE = 16; - /** State. */ - private final long[] state = new long[SEED_SIZE]; - /** Index in "state" array. */ - private int index; - - /** - * Creates a new instance. - * - * @param seed Initial seed. - * If the length is larger than 16, only the first 16 elements will - * be used; if smaller, the remaining elements will be automatically - * set. - */ - public XorShift1024Star(long[] seed) { - setSeedInternal(seed); - } - - /** {@inheritDoc} */ - @Override - protected byte[] getStateInternal() { - final long[] s = Arrays.copyOf(state, SEED_SIZE + 1); - s[SEED_SIZE] = index; - - return NumberFactory.makeByteArray(s); - } - - /** {@inheritDoc} */ - @Override - protected void setStateInternal(byte[] s) { - if (s.length != (SEED_SIZE + 1) * 8) { - throw new InsufficientDataException(); - } - - final long[] tmp = NumberFactory.makeLongArray(s); - - System.arraycopy(tmp, 0, state, 0, SEED_SIZE); - index = (int) tmp[SEED_SIZE]; - } - - /** - * Seeds the RNG. - * - * @param seed Seed. - */ - private void setSeedInternal(long[] seed) { - // Reset the whole state of this RNG (i.e. "state" and "index"). - // Seeding procedure is not part of the reference code. - - System.arraycopy(seed, 0, state, 0, Math.min(seed.length, state.length)); - - if (seed.length < SEED_SIZE) { - for (int i = seed.length; i < SEED_SIZE; i++) { - state[i] = 26021969L * i; - } - for (int i = SEED_SIZE - 1; i > seed.length; i--) { - state[i] ^= state[SEED_SIZE - i - 1]; - } - - state[seed.length] = 0x8000000000000000L; // Ensuring non-zero initial array. - } - - index = 0; - } - - /** {@inheritDoc} */ - @Override - public long next() { - final long s0 = state[index]; - long s1 = state[index = (index + 1) & 15]; - s1 ^= s1 << 31; // a - state[index] = s1 ^ s0 ^ (s1 >>> 11) ^ (s0 >>> 30); // b,c - return state[index] * 1181783497276652981L; - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/source64/package-info.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/source64/package-info.java b/src/main/java/org/apache/commons/math4/rng/internal/source64/package-info.java deleted file mode 100644 index 8afab2c..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/source64/package-info.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * <h3> - * Concrete algorithms for {@code long}-based sources of randomness - * </h3> - * - * <p> - * <b>For internal use only:</b> Direct access to classes in this package - * is discouraged, as they could be modified without notice. - * </p> - * - * <p><b>Notes for developers</b></p> - * - * <ul> - * <li> - * A source of randomness must inherit from - * {@link org.apache.commons.math4.rng.internal.source64.LongProvider} - * </li> - * <li> - * The "provider" must specify <em>one</em> way for setting the seed. - * For a given seed, the generated sequence must always be the same. - * </li> - * <li> - * The "provider" must implement methods {@code getStateInternal} and - * {@code setStateInternal} in order to save and restore the state of an - * instance (cf. {@link org.apache.commons.math4.rng.internal.BaseProvider}). - * </li> - * <li> - * When a new class is implemented here, user-access to it must be provided - * through associated {@link org.apache.commons.math4.rng.RandomSource - * factory methods}. - * </li> - * </ul> - */ - -package org.apache.commons.math4.rng.internal.source64; http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/Int2Long.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/Int2Long.java b/src/main/java/org/apache/commons/math4/rng/internal/util/Int2Long.java deleted file mode 100644 index d423c08..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/Int2Long.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -/** - * Converts a {@code Integer} to an {@code Long}. - * - * @since 4.0 - */ -public class Int2Long implements SeedConverter<Integer, Long> { - /** {@inheritDoc} */ - @Override - public Long convert(Integer seed) { - final int s = seed; - return NumberFactory.makeLong(s, ~s); - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return getClass().getSimpleName(); - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/IntArray2Int.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/IntArray2Int.java b/src/main/java/org/apache/commons/math4/rng/internal/util/IntArray2Int.java deleted file mode 100644 index 030895d..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/IntArray2Int.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -/** - * Creates a single value by "xor" of all the values in the input array. - * - * @since 4.0 - */ -public class IntArray2Int implements SeedConverter<int[], Integer> { - /** {@inheritDoc} */ - @Override - public Integer convert(int[] seed) { - int out = 0; - for (int i = 0; i < seed.length; i++) { - out ^= seed[i]; - } - - return out; - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return getClass().getSimpleName(); - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/IntArray2LongArray.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/IntArray2LongArray.java b/src/main/java/org/apache/commons/math4/rng/internal/util/IntArray2LongArray.java deleted file mode 100644 index 399de7f..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/IntArray2LongArray.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -/** - * Creates a {@code long[]} from an {@code int[]}. - * - * @since 4.0 - */ -public class IntArray2LongArray implements SeedConverter<int[], long[]> { - /** {@inheritDoc} */ - @Override - public long[] convert(int[] seed) { - final int outSize = (seed.length + 1) / 2; - final long[] out = new long[outSize]; - for (int i = 0; i < outSize; i++) { - final int lo = seed[i]; - final int hi = outSize + i < seed.length ? seed[outSize + i] : 0; - out[i] = NumberFactory.makeLong(hi, lo) ; - } - - return out; - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return getClass().getSimpleName(); - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/Long2Int.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/Long2Int.java b/src/main/java/org/apache/commons/math4/rng/internal/util/Long2Int.java deleted file mode 100644 index 638b173..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/Long2Int.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -/** - * Converts a {@code Long} to an {@code Integer}. - * - * @since 4.0 - */ -public class Long2Int implements SeedConverter<Long, Integer> { - /** {@inheritDoc} */ - @Override - public Integer convert(Long seed) { - return NumberFactory.makeInt(seed); - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return getClass().getSimpleName(); - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/Long2IntArray.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/Long2IntArray.java b/src/main/java/org/apache/commons/math4/rng/internal/util/Long2IntArray.java deleted file mode 100644 index 84e5016..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/Long2IntArray.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -import org.apache.commons.math4.rng.internal.source64.SplitMix64; - -/** - * Uses a {@code long} value to seed a {@link SplitMix64} RNG and - * create a {@code int[]} with the requested number of random - * values. - * - * @since 4.0 - */ -public class Long2IntArray implements SeedConverter<Long, int[]> { - /** Size of the output array. */ - private final int size; - - /** - * @param size Size of the output array. - */ - public Long2IntArray(int size) { - this.size = size; - } - - /** {@inheritDoc} */ - @Override - public int[] convert(Long seed) { - return SeedFactory.createIntArray(size, new SplitMix64(seed)); - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return getClass().getSimpleName() + "(size=" + size + ")"; - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/Long2LongArray.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/Long2LongArray.java b/src/main/java/org/apache/commons/math4/rng/internal/util/Long2LongArray.java deleted file mode 100644 index 9d8b700..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/Long2LongArray.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -import org.apache.commons.math4.rng.internal.source64.SplitMix64; - -/** - * Uses a {@code Long} value to seed a {@link SplitMix64} RNG and - * create a {@code long[]} with the requested number of random - * values. - * - * @since 4.0 - */ -public class Long2LongArray implements SeedConverter<Long, long[]> { - /** Size of the output array. */ - private final int size; - - /** - * @param size Size of the output array. - */ - public Long2LongArray(int size) { - this.size = size; - } - - /** {@inheritDoc} */ - @Override - public long[] convert(Long seed) { - final long[] out = new long[size]; - final SplitMix64 rng = new SplitMix64(seed); - for (int i = 0; i < size; i++) { - out[i] = rng.nextLong(); - } - - return out; - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return getClass().getSimpleName() + "(size: " + size + ")"; - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/LongArray2IntArray.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/LongArray2IntArray.java b/src/main/java/org/apache/commons/math4/rng/internal/util/LongArray2IntArray.java deleted file mode 100644 index 67b2ba8..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/LongArray2IntArray.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -/** - * Creates an {@code int[]} from a {@code long[]}. - * - * @since 4.0 - */ -public class LongArray2IntArray implements SeedConverter<long[], int[]> { - /** {@inheritDoc} */ - @Override - public int[] convert(long[] seed) { - final int[] out = new int[seed.length * 2]; - for (int i = 0; i < seed.length; i++) { - final long current = seed[i]; - out[i] = NumberFactory.extractLo(current); - out[seed.length + i] = NumberFactory.extractHi(current); - } - - return out; - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return getClass().getSimpleName(); - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/LongArray2Long.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/LongArray2Long.java b/src/main/java/org/apache/commons/math4/rng/internal/util/LongArray2Long.java deleted file mode 100644 index 4556aaf..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/LongArray2Long.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -/** - * Creates a single value by "xor" of all the values in the input array. - * - * @since 4.0 - */ -public class LongArray2Long implements SeedConverter<long[], Long> { - /** {@inheritDoc} */ - @Override - public Long convert(long[] seed) { - long out = 0; - for (int i = 0; i < seed.length; i++) { - out ^= seed[i]; - } - - return out; - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return getClass().getSimpleName(); - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/LongMixInt.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/LongMixInt.java b/src/main/java/org/apache/commons/math4/rng/internal/util/LongMixInt.java deleted file mode 100644 index e30a072..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/LongMixInt.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -import org.apache.commons.math4.rng.internal.source64.SplitMix64; - -/** - * Uses a {@code long} value to seed a {@link SplitMix64} RNG and - * create an {@code int[]} with the requested number of random - * values. - * - * @since 4.0 - */ -public class LongMixInt implements SeedConverter<Long, int[]> { - /** Size of the output array. */ - private final int size; - - /** - * @param size Size of the output array. - */ - public LongMixInt(int size) { - this.size = size; - } - - /** {@inheritDoc} */ - @Override - public int[] convert(Long seed) { - return SeedFactory.createIntArray(size, new SplitMix64(seed)); - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return getClass().getSimpleName() + "(size=" + size + ")"; - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/LongMixLong.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/LongMixLong.java b/src/main/java/org/apache/commons/math4/rng/internal/util/LongMixLong.java deleted file mode 100644 index 12fb59e..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/LongMixLong.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -import org.apache.commons.math4.rng.internal.source64.SplitMix64; - -/** - * Uses a {@code long} value to seed a {@link SplitMix64} RNG and - * create a {@code long[]} with the requested number of random - * values. - * - * @since 4.0 - */ -public class LongMixLong implements SeedConverter<Long, long[]> { - /** Size of the output array. */ - private final int size; - - /** - * @param size Size of the output array. - */ - public LongMixLong(int size) { - this.size = size; - } - - /** {@inheritDoc} */ - @Override - public long[] convert(Long seed) { - final long[] out = new long[size]; - final SplitMix64 rng = new SplitMix64(seed); - for (int i = 0; i < size; i++) { - out[i] = rng.nextLong(); - } - - return out; - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return getClass().getSimpleName() + "(size: " + size + ")"; - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/NoOpConverter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/NoOpConverter.java b/src/main/java/org/apache/commons/math4/rng/internal/util/NoOpConverter.java deleted file mode 100644 index 08aee80..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/NoOpConverter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - - -/** - * Dummy converter that simply passes on its input. - * It can be useful to avoid "unchecked" compiler warnings. - * - * @param <SEED> Seed type. - * - * @since 4.0 - */ -public class NoOpConverter<SEED> implements SeedConverter<SEED, SEED> { - /** {@inheritDoc} */ - @Override - public SEED convert(SEED seed) { - return seed; - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return "Pass-through"; - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/NumberFactory.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/NumberFactory.java b/src/main/java/org/apache/commons/math4/rng/internal/util/NumberFactory.java deleted file mode 100644 index befb16c..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/NumberFactory.java +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -import java.util.Arrays; -import org.apache.commons.math4.exception.DimensionMismatchException; - -/** - * Utility for creating number types from one or two {@code int} values - * or one {@code long} value, or a sequence of bytes. - */ -public final class NumberFactory { - /** See {@link #makeDouble(long)} */ - private static final long DOUBLE_HIGH_BITS = 0x3ffL << 52; - /** See {@link #makeFloat(int)} */ - private static final float FLOAT_MULTIPLIER = 0x1.0p-23f; - /** See {@link #makeDouble(int, int)} */ - private static final double DOUBLE_MULTIPLIER = 0x1.0p-52d; - /** Lowest byte mask. */ - private static final long LONG_LOWEST_BYTE_MASK = 0xffL; - /** Number of bytes in a {@code long} */ - private static final int LONG_SIZE = 8; - /** Lowest byte mask. */ - private static final int INT_LOWEST_BYTE_MASK = 0xff; - /** Number of bytes in a {@code int} */ - private static final int INT_SIZE = 4; - - /** - * Class contains only static methods. - */ - private NumberFactory() {} - - /** - * @param v Number. - * @return a boolean. - */ - public static boolean makeBoolean(int v) { - return (v >>> 31) != 0; - } - - /** - * @param v Number. - * @return a boolean. - */ - public static boolean makeBoolean(long v) { - return (v >>> 63) != 0; - } - - /** - * @param v Number. - * @return a {@code double} value in the interval {@code [0, 1]}. - */ - public static double makeDouble(long v) { - // http://xorshift.di.unimi.it - return Double.longBitsToDouble(DOUBLE_HIGH_BITS | v >>> 12) - 1d; - } - - /** - * @param v Number (high order bits). - * @param w Number (low order bits). - * @return a {@code double} value in the interval {@code [0, 1]}. - */ - public static double makeDouble(int v, - int w) { - final long high = ((long) (v >>> 6)) << 26; - final int low = w >>> 6; - return (high | low) * DOUBLE_MULTIPLIER; - } - - /** - * @param v Number. - * @return a {@code float} value in the interval {@code [0, 1]}. - */ - public static float makeFloat(int v) { - return (v >>> 9) * FLOAT_MULTIPLIER; - } - - /** - * @param v Number (high order bits). - * @param w Number (low order bits). - * @return a {@code long} value. - */ - public static long makeLong(int v, - int w) { - return (((long) v) << 32) | (w & 0xffffffffL); - } - - /** - * Creates an {@code int} from a {@code long}. - * - * @param v Number. - * @return an {@code int} value made from the "xor" of the - * {@link #extractHi(long) high order bits} and - * {@link #extractLo(long) low order bits} of {@code v}. - */ - public static int makeInt(long v) { - return extractHi(v) ^ extractLo(v); - } - - /** - * Creates an {@code int} from a {@code long}, using the high order bits. - * <p> - * The returned value is such that if - * <pre><code> - * vL = extractLo(v); - * vH = extractHi(v); - * </code></pre> - * then {@code v} is equal to {@link #makeLong(int,int) makeLong(vH, vL)}. - * </p> - * - * @param v Number. - * @return an {@code int} value made from the most significant bits - * of {@code v}. - */ - public static int extractHi(long v) { - return (int) (v >>> 32); - } - - /** - * Creates an {@code int} from a {@code long}, using the low order bits. - * <p> - * The returned value is such that if - * <pre><code> - * vL = extractLo(v); - * vH = extractHi(v); - * </code></pre> - * then {@code v} is equal to {@link #makeLong(int,int) makeLong(vH, vL)}. - * </p> - * - * @param v Number. - * @return an {@code int} value made from the least significant bits - * of {@code v}. - */ - public static int extractLo(long v) { - return (int) v; - } - - /** - * Splits a {@code long} into 8 bytes. - * - * @param v Value. - * @return the bytes that compose the given value (least-significant - * byte first). - */ - public static byte[] makeByteArray(long v) { - final byte[] b = new byte[LONG_SIZE]; - - for (int i = 0; i < LONG_SIZE; i++) { - final int shift = i * 8; - b[i] = (byte) ((v >>> shift) & LONG_LOWEST_BYTE_MASK); - } - - return b; - } - - /** - * Creates a {@code long} from 8 bytes. - * - * @param input Input. - * @return the value that correspond to the given bytes assuming - * that the is ordered in increasing byte significance (i.e. the - * first byte in the array is the least-siginficant). - * @throws DimensionMismatchException if {@code input.length != 8}. - */ - public static long makeLong(byte[] input) { - if (input.length != LONG_SIZE) { - throw new DimensionMismatchException(input.length, LONG_SIZE); - } - - long v = 0; - for (int i = 0; i < LONG_SIZE; i++) { - final int shift = i * 8; - v |= (((long) input[i]) & LONG_LOWEST_BYTE_MASK) << shift; - } - - return v; - } - - /** - * Splits an array of {@code long} values into a sequence of bytes. - * This method calls {@link #makeByteArray(long)} for each element of - * the {@code input}. - * - * @param input Input. - * @return an array of bytes. - */ - public static byte[] makeByteArray(long[] input) { - final int size = input.length * LONG_SIZE; - final byte[] b = new byte[size]; - - for (int i = 0; i < input.length; i++) { - final byte[] current = makeByteArray(input[i]); - System.arraycopy(current, 0, b, i * LONG_SIZE, LONG_SIZE); - } - - return b; - } - - /** - * Creates an array of {@code long} values from a sequence of bytes. - * This method calls {@link #makeLong(byte[])} for each subsequence - * of 8 bytes. - * - * @param input Input. - * @return an array of {@code long}. - * @throws DimensionMismatchException if {@code input.length} is not - * a multiple of 8. - */ - public static long[] makeLongArray(byte[] input) { - final int size = input.length; - final int num = size / LONG_SIZE; - if (num * LONG_SIZE != size) { - throw new DimensionMismatchException(size, num * LONG_SIZE); - } - - final long[] output = new long[num]; - for (int i = 0; i < num; i++) { - final int from = i * LONG_SIZE; - final byte[] current = Arrays.copyOfRange(input, from, from + LONG_SIZE); - output[i] = makeLong(current); - } - - return output; - } - - /** - * Splits an {@code int} into 4 bytes. - * - * @param v Value. - * @return the bytes that compose the given value (least-significant - * byte first). - */ - public static byte[] makeByteArray(int v) { - final byte[] b = new byte[INT_SIZE]; - - for (int i = 0; i < INT_SIZE; i++) { - final int shift = i * 8; - b[i] = (byte) ((v >>> shift) & INT_LOWEST_BYTE_MASK); - } - - return b; - } - - /** - * Creates an {@code int} from 4 bytes. - * - * @param input Input. - * @return the value that correspond to the given bytes assuming - * that the is ordered in increasing byte significance (i.e. the - * first byte in the array is the least-siginficant). - * @throws DimensionMismatchException if {@code input.length != 4}. - */ - public static int makeInt(byte[] input) { - if (input.length != INT_SIZE) { - throw new DimensionMismatchException(input.length, INT_SIZE); - } - - int v = 0; - for (int i = 0; i < INT_SIZE; i++) { - final int shift = i * 8; - v |= (((int) input[i]) & INT_LOWEST_BYTE_MASK) << shift; - } - - return v; - } - - /** - * Splits an array of {@code int} values into a sequence of bytes. - * This method calls {@link #makeByteArray(int)} for each element of - * the {@code input}. - * - * @param input Input. - * @return an array of bytes. - */ - public static byte[] makeByteArray(int[] input) { - final int size = input.length * INT_SIZE; - final byte[] b = new byte[size]; - - for (int i = 0; i < input.length; i++) { - final byte[] current = makeByteArray(input[i]); - System.arraycopy(current, 0, b, i * INT_SIZE, INT_SIZE); - } - - return b; - } - - /** - * Creates an array of {@code int} values from a sequence of bytes. - * This method calls {@link #makeInt(byte[])} for each subsequence - * of 4 bytes. - * - * @param input Input. Length must be a multiple of 4. - * @return an array of {@code int}. - * @throws DimensionMismatchException if {@code input.length} is not - * a multiple of 4. - */ - public static int[] makeIntArray(byte[] input) { - final int size = input.length; - final int num = size / INT_SIZE; - if (num * INT_SIZE != size) { - throw new DimensionMismatchException(size, num * INT_SIZE); - } - - final int[] output = new int[num]; - for (int i = 0; i < num; i++) { - final int from = i * INT_SIZE; - final byte[] current = Arrays.copyOfRange(input, from, from + INT_SIZE); - output[i] = makeInt(current); - } - - return output; - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/SeedConverter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/SeedConverter.java b/src/main/java/org/apache/commons/math4/rng/internal/util/SeedConverter.java deleted file mode 100644 index 532277b..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/SeedConverter.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -/** - * Seed converter. - * - * @param <IN> Input seed type. - * @param <OUT> Output seed type. - * - * @since 4.0 - */ -public interface SeedConverter<IN, OUT> { - /** - * Converts seed from input type to output type. - * - * @param seed Original seed value. - * @return the converted seed value. - */ - OUT convert(IN seed); -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/SeedConverterComposer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/SeedConverterComposer.java b/src/main/java/org/apache/commons/math4/rng/internal/util/SeedConverterComposer.java deleted file mode 100644 index c39c7d8..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/SeedConverterComposer.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -/** - * Composes two {@link SeedConverter converters}. - * - * @param <IN> Input seed type. - * @param <TRANS> Transitional seed type. - * @param <OUT> Output seed type. - * - * @since 4.0 - */ -public class SeedConverterComposer<IN, TRANS, OUT> implements SeedConverter<IN, OUT> { - /** First conversion. */ - private SeedConverter<IN, TRANS> first; - /** Second conversion. */ - private SeedConverter<TRANS, OUT> second; - - /** - * @param first First conversion. - * @param second second conversion. - */ - public SeedConverterComposer(SeedConverter<IN, TRANS> first, - SeedConverter<TRANS, OUT> second) { - this.first = first; - this.second = second; - } - - /** {@inheritDoc} */ - @Override - public OUT convert(IN seed) { - final TRANS trans = first.convert(seed); - return second.convert(trans); - } - - /** {@inheritDoc} */ - @Override - public String toString() { - return getClass().getSimpleName() + " (" + second + " o " + first + ")"; - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/SeedFactory.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/SeedFactory.java b/src/main/java/org/apache/commons/math4/rng/internal/util/SeedFactory.java deleted file mode 100644 index dc867f2..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/SeedFactory.java +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.rng.internal.util; - -import org.apache.commons.math4.rng.internal.source32.RandomIntSource; -import org.apache.commons.math4.rng.internal.source32.Well44497b; -import org.apache.commons.math4.rng.internal.source64.RandomLongSource; -import org.apache.commons.math4.rng.internal.source64.SplitMix64; - -/** - * Utilities related to seeding. - * - * <p> - * This class provides methods to generate random seeds (single values - * or arrays of values, of {@code int} or {@code long} types) that can - * be passed to the {@link org.apache.commons.math4.rng.RandomSource - * methods that create a generator instance}. - * <br> - * Although the seed-generating methods defined in this class will likely - * return different values for all calls, there is no guarantee that the - * produced seed will result always in a "good" sequence of numbers (even - * if the generator initialized with that seed is good). - * <br> - * There is <i>no guarantee</i> that sequences will not overlap. - * </p> - * - * @since 4.0 - */ -public class SeedFactory { - /** Generator with a long period. */ - private static final RandomIntSource SEED_GENERATOR; - - static { - // Another RNG for initializing the "SEED_GENERATOR". - final long t = System.currentTimeMillis(); - final int h = System.identityHashCode(Runtime.getRuntime()); - final SplitMix64 rng = new SplitMix64(t ^ NumberFactory.makeLong(h, ~h)); - - final int blockCount = 1391; // Size of the state array of "Well44497b". - SEED_GENERATOR = new Well44497b(createIntArray(blockCount, rng)); - } - - /** - * Class contains only static methods. - */ - private SeedFactory() {} - - /** - * Creates a number for use as a seed. - * - * @return a random number. - */ - public static int createInt() { - return createInt(SEED_GENERATOR, System.identityHashCode(new Object())); - } - - /** - * Creates a number for use as a seed. - * - * @return a random number. - */ - public static long createLong() { - return createLong(SEED_GENERATOR, System.identityHashCode(new Object())); - } - - /** - * Creates an array of numbers for use as a seed. - * - * @param n Size of the array to create. - * @return an array of {@code n} random numbers. - */ - public static int[] createIntArray(int n) { - return createIntArray(n, SEED_GENERATOR, new Object()); - } - - /** - * Creates an array of numbers for use as a seed. - * - * @param n Size of the array to create. - * @return an array of {@code n} random numbers. - */ - public static long[] createLongArray(int n) { - return createLongArray(n, SEED_GENERATOR, new Object()); - } - - /** - * Creates an array of numbers for use as a seed. - * - * @param n Size of the array to create. - * @param source Source of randomness. - * @return an array of {@code n} random numbers drawn from the - * {@code source}. - */ - static long[] createLongArray(int n, - RandomIntSource source) { - return createLongArray(n, source, null); - } - - /** - * Creates an array of numbers for use as a seed. - * - * @param n Size of the array to create. - * @param source Source of randomness. - * @return an array of {@code n} random numbers drawn from the - * {@code source}. - */ - static int[] createIntArray(int n, - RandomLongSource source) { - return createIntArray(n, source, null); - } - - /** - * Creates an array of numbers for use as a seed. - * - * @param n Size of the array to create. - * @param source Source of randomness. - * @return an array of {@code n} random numbers drawn from the - * {@code source}. - */ - static int[] createIntArray(int n, - RandomIntSource source) { - return createIntArray(n, source, null); - } - - /** - * Creates an array of numbers for use as a seed. - * - * @param n Size of the array to create. - * @param source Source of randomness. - * @param h Arbitrary object whose {@link System#identityHashCode(Object) - * hash code} will be combined with the next number drawn from - * the {@code source}. - * @return an array of {@code n} random numbers. - */ - private static long[] createLongArray(int n, - RandomIntSource source, - Object h) { - final long[] array = new long[n]; - - final int hash = System.identityHashCode(h); - for (int i = 0; i < n; i++) { - array[i] = createLong(source, hash); - } - - return array; - } - - /** - * Creates an array of numbers for use as a seed. - * - * @param n Size of the array to create. - * @param source Source of randomness. - * @param h Arbitrary object whose {@link System#identityHashCode(Object) - * hash code} will be combined with the next number drawn from - * the {@code source}. - * @return an array of {@code n} random numbers. - */ - private static int[] createIntArray(int n, - RandomLongSource source, - Object h) { - final int[] array = new int[n]; - - final int hash = System.identityHashCode(h); - for (int i = 0; i < n; i += 2) { - final long v = createLong(source, hash); - - array[i] = NumberFactory.extractHi(v); - - if (i + 1 < n) { - array[i + 1] = NumberFactory.extractLo(v); - } - } - - return array; - } - - /** - * Creates an array of numbers for use as a seed. - * - * @param n Size of the array to create. - * @param source Source of randomness. - * @param h Arbitrary object whose {@link System#identityHashCode(Object) - * hash code} will be combined with the next number drawn from - * the {@code source}. - * @return an array of {@code n} random numbers. - */ - private static int[] createIntArray(int n, - RandomIntSource source, - Object h) { - final int[] array = new int[n]; - - final int hash = System.identityHashCode(h); - for (int i = 0; i < n; i++) { - array[i] = createInt(source, hash); - } - - return array; - } - - /** - * Creates a random number by performing an "xor" between the - * next value in the sequence of the {@code source} and the - * given {@code number}. - * - * @param source Source of randomness. - * @param number Arbitrary number. - * @return a random number. - */ - private static long createLong(RandomLongSource source, - int number) { - synchronized (source) { - return source.next() ^ NumberFactory.makeLong(number, number); - } - } - - /** - * Creates a random number by performing an "xor" between the - * the next value in the sequence of the {@code source} and the - * given {@code number}. - * - * @param source Source of randomness. - * @param number Arbitrary number. - * @return a random number. - */ - private static long createLong(RandomIntSource source, - int number) { - synchronized (source) { - return NumberFactory.makeLong(source.next() ^ number, - source.next() ^ number); - } - } - - /** - * Creates a random number by performing an "xor" between the - * next value in the sequence of the {@code source} and the - * given {@code number}. - * - * @param source Source of randomness. - * @param number Arbitrary number. - * @return a random number. - */ - private static int createInt(RandomIntSource source, - int number) { - synchronized (source) { - return source.next() ^ number; - } - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/internal/util/package-info.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/internal/util/package-info.java b/src/main/java/org/apache/commons/math4/rng/internal/util/package-info.java deleted file mode 100644 index 9ce5213..0000000 --- a/src/main/java/org/apache/commons/math4/rng/internal/util/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Utilities for seed conversion. - */ - -package org.apache.commons.math4.rng.internal.util; http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/rng/package-info.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/rng/package-info.java b/src/main/java/org/apache/commons/math4/rng/package-info.java deleted file mode 100644 index 19c5755..0000000 --- a/src/main/java/org/apache/commons/math4/rng/package-info.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * <h3>Randomness Providers</h3> - * - * <p> - * This package contains the public API for generating sequences of - * pseudo-random numbers that are <i>uniformly distributed</i> in a - * specified range. - * <br> - * All implemented generators can be instantiated through - * {@link org.apache.commons.math4.rng.RandomSource factory methods}. - * The low-level classes, that define how the randomness is produced, - * are implemented in package {@link org.apache.commons.math4.rng.internal} - * and its sub-packages, but should not be used directly. - * <br> - * The generators are <i>not</i> thread-safe: Parallel applications must - * use different generator instances in different threads. - * </p> - * - * <p> - * In the case of pseudo-random generators, the source of randomness is - * usually a set of numbers whose bits representation are scrambled in such - * a way as to produce a random-looking sequence. - * <br> - * The main property of the sequence is that the numbers must be uniformly - * distributed within their allowed range. - * <br> - * Classes in this package do not provide any further processing of the - * number generation such as to match other types of distribution. - * </p> - * - * <p> - * Which source of randomness to choose may depend on which properties - * are more important. - * Considerations can include speed of generation, memory usage, period - * size, equidistribution, correlation, etc. - * <br> - * For some of the generators, interesting properties (of the reference - * implementations) are proven in scientific papers. - * Some generators can also suffer from potential weaknesses. - * </p> - * - * <p> - * For simple sampling, any of the generators implemented in this library - * may be sufficient. - * <br> - * For Monte-Carlo simulations that require generating high-dimensional - * vectors), equidistribution and non-correlation are crucial. - * The <i>Mersenne Twister</i> and <i>Well</i> generators have - * equidistribution properties proven according to their bits pool size - * which is directly related to their period (all of them have maximal - * period, i.e. a generator with size {@code n} pool has a period - * <code>2<sup>n</sup>-1</code>). - * They also have equidistribution properties for 32 bits blocks up to - * {@code s/32} dimension where {@code s} is their pool size. - * <br> - * For example, {@code Well19937c} is equidistributed up to dimension 623 - * (i.e. 19937 divided by 32). - * It means that a Monte-Carlo simulation generating vectors of {@code n} - * (32-bits integer) variables at each iteration has some guarantee on the - * properties of its components as long as {@code n < 623}. - * Note that if the variables are of type {@code double}, the limit is - * divided by two (since 64 bits are needed to create a {@code double}). - * <br> - * Reference to the relevant publications are listed in the specific - * documentation of each class. - * </p> - * - * <p> - * Memory usage can vary a lot between providers. - * The state of {@code MersenneTwister} is composed of 624 integers, - * using about 2.5 kB. - * The <i>Well</i> generators use 6 integer arrays, the length of each - * being equal to the pool size; thus, for example, {@code Well44497b} - * uses about 33 kB. - * </p> - */ - -package org.apache.commons.math4.rng; http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java b/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java index 79451dd..269c8a3 100644 --- a/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java +++ b/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java @@ -40,8 +40,8 @@ import org.apache.commons.math4.linear.Array2DRowFieldMatrix; import org.apache.commons.math4.linear.FieldMatrix; import org.apache.commons.math4.linear.MatrixUtils; import org.apache.commons.math4.linear.RealMatrix; -import org.apache.commons.math4.rng.RandomSource; -import org.apache.commons.math4.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; +import org.apache.commons.rng.UniformRandomProvider; import org.apache.commons.math4.util.CombinatoricsUtils; import org.apache.commons.math4.util.FastMath; import org.apache.commons.math4.util.MathArrays; http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/stat/ranking/NaturalRanking.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/stat/ranking/NaturalRanking.java b/src/main/java/org/apache/commons/math4/stat/ranking/NaturalRanking.java index 9b28a8e..9d468fd 100644 --- a/src/main/java/org/apache/commons/math4/stat/ranking/NaturalRanking.java +++ b/src/main/java/org/apache/commons/math4/stat/ranking/NaturalRanking.java @@ -24,8 +24,8 @@ import java.util.List; import org.apache.commons.math4.exception.MathInternalError; import org.apache.commons.math4.exception.NotANumberException; -import org.apache.commons.math4.rng.UniformRandomProvider; -import org.apache.commons.math4.rng.RandomSource; +import org.apache.commons.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; import org.apache.commons.math4.random.RandomUtils; import org.apache.commons.math4.util.FastMath; http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/util/MathArrays.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/util/MathArrays.java b/src/main/java/org/apache/commons/math4/util/MathArrays.java index e1e4478..cddf5de 100644 --- a/src/main/java/org/apache/commons/math4/util/MathArrays.java +++ b/src/main/java/org/apache/commons/math4/util/MathArrays.java @@ -39,8 +39,8 @@ import org.apache.commons.math4.exception.NotStrictlyPositiveException; import org.apache.commons.math4.exception.NullArgumentException; import org.apache.commons.math4.exception.NumberIsTooLargeException; import org.apache.commons.math4.exception.util.LocalizedFormats; -import org.apache.commons.math4.rng.RandomSource; -import org.apache.commons.math4.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; +import org.apache.commons.rng.UniformRandomProvider; /** * Arrays utilities. http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/main/java/org/apache/commons/math4/util/RandomPivotingStrategy.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/math4/util/RandomPivotingStrategy.java b/src/main/java/org/apache/commons/math4/util/RandomPivotingStrategy.java index dded9f0..8161ccd 100644 --- a/src/main/java/org/apache/commons/math4/util/RandomPivotingStrategy.java +++ b/src/main/java/org/apache/commons/math4/util/RandomPivotingStrategy.java @@ -21,8 +21,8 @@ import java.io.IOException; import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import org.apache.commons.math4.exception.MathIllegalArgumentException; -import org.apache.commons.math4.rng.UniformRandomProvider; -import org.apache.commons.math4.rng.RandomSource; +import org.apache.commons.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; /** * A strategy of selecting random index between begin and end indices. http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/test/java/org/apache/commons/math4/ExtendedFieldElementAbstractTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/math4/ExtendedFieldElementAbstractTest.java b/src/test/java/org/apache/commons/math4/ExtendedFieldElementAbstractTest.java index 5f27243..240fea4 100644 --- a/src/test/java/org/apache/commons/math4/ExtendedFieldElementAbstractTest.java +++ b/src/test/java/org/apache/commons/math4/ExtendedFieldElementAbstractTest.java @@ -17,8 +17,8 @@ package org.apache.commons.math4; import org.apache.commons.math4.RealFieldElement; -import org.apache.commons.math4.rng.UniformRandomProvider; -import org.apache.commons.math4.rng.RandomSource; +import org.apache.commons.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; import org.apache.commons.math4.util.FastMath; import org.apache.commons.math4.util.MathArrays; import org.junit.Assert; http://git-wip-us.apache.org/repos/asf/commons-math/blob/eeeb553c/src/test/java/org/apache/commons/math4/PerfTestUtils.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/math4/PerfTestUtils.java b/src/test/java/org/apache/commons/math4/PerfTestUtils.java index 622502e..e56c81f 100644 --- a/src/test/java/org/apache/commons/math4/PerfTestUtils.java +++ b/src/test/java/org/apache/commons/math4/PerfTestUtils.java @@ -22,8 +22,8 @@ import java.util.regex.MatchResult; import java.util.concurrent.Callable; import org.apache.commons.math4.util.MathArrays; -import org.apache.commons.math4.rng.UniformRandomProvider; -import org.apache.commons.math4.rng.RandomSource; +import org.apache.commons.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; import org.apache.commons.math4.exception.MathIllegalStateException; import org.apache.commons.math4.exception.NumberIsTooLargeException; import org.apache.commons.math4.exception.util.LocalizedFormats;