summaryrefslogtreecommitdiff
path: root/numpy/random/tests/test_smoke.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/random/tests/test_smoke.py')
-rw-r--r--numpy/random/tests/test_smoke.py154
1 files changed, 22 insertions, 132 deletions
diff --git a/numpy/random/tests/test_smoke.py b/numpy/random/tests/test_smoke.py
index c94e1a285..4263335f6 100644
--- a/numpy/random/tests/test_smoke.py
+++ b/numpy/random/tests/test_smoke.py
@@ -5,10 +5,7 @@ from functools import partial
import numpy as np
import pytest
from numpy.testing import assert_equal, assert_, assert_array_equal
-from numpy.random import (Generator, MT19937, DSFMT, ThreeFry,
- PCG32, PCG64, Philox, Xoshiro256, Xoshiro512,
- entropy)
-
+from numpy.random import (Generator, MT19937, PCG64, Philox, SFC64, entropy)
@pytest.fixture(scope='module',
params=(np.bool, np.int8, np.int16, np.int32, np.int64,
@@ -99,7 +96,7 @@ class RNG(object):
@classmethod
def setup_class(cls):
# Overridden in test classes. Place holder to silence IDE noise
- cls.bit_generator = Xoshiro256
+ cls.bit_generator = PCG64
cls.advance = None
cls.seed = [12345]
cls.rg = Generator(cls.bit_generator(*cls.seed))
@@ -148,7 +145,7 @@ class RNG(object):
assert_(comp_state(jumped_state, rejumped_state))
else:
bitgen_name = self.rg.bit_generator.__class__.__name__
- if bitgen_name not in ('',):
+ if bitgen_name not in ('SFC64',):
raise AttributeError('no "jumped" in %s' % bitgen_name)
pytest.skip('Jump is not supported by {0}'.format(bitgen_name))
@@ -459,56 +456,34 @@ class RNG(object):
else:
dtype = np.uint64
seed = np.array([1], dtype=dtype)
- self.rg.bit_generator.seed(seed)
- state1 = self.rg.bit_generator.state
- self.rg.bit_generator.seed(1)
- state2 = self.rg.bit_generator.state
+ bg = self.bit_generator(seed)
+ state1 = bg.state
+ bg = self.bit_generator(1)
+ state2 = bg.state
assert_(comp_state(state1, state2))
seed = np.arange(4, dtype=dtype)
- self.rg.bit_generator.seed(seed)
- state1 = self.rg.bit_generator.state
- self.rg.bit_generator.seed(seed[0])
- state2 = self.rg.bit_generator.state
+ bg = self.bit_generator(seed)
+ state1 = bg.state
+ bg = self.bit_generator(seed[0])
+ state2 = bg.state
assert_(not comp_state(state1, state2))
seed = np.arange(1500, dtype=dtype)
- self.rg.bit_generator.seed(seed)
- state1 = self.rg.bit_generator.state
- self.rg.bit_generator.seed(seed[0])
- state2 = self.rg.bit_generator.state
+ bg = self.bit_generator(seed)
+ state1 = bg.state
+ bg = self.bit_generator(seed[0])
+ state2 = bg.state
assert_(not comp_state(state1, state2))
seed = 2 ** np.mod(np.arange(1500, dtype=dtype),
self.seed_vector_bits - 1) + 1
- self.rg.bit_generator.seed(seed)
- state1 = self.rg.bit_generator.state
- self.rg.bit_generator.seed(seed[0])
- state2 = self.rg.bit_generator.state
+ bg = self.bit_generator(seed)
+ state1 = bg.state
+ bg = self.bit_generator(seed[0])
+ state2 = bg.state
assert_(not comp_state(state1, state2))
- def test_seed_array_error(self):
- if self.seed_vector_bits == 32:
- out_of_bounds = 2 ** 32
- else:
- out_of_bounds = 2 ** 64
-
- seed = -1
- with pytest.raises(ValueError):
- self.rg.bit_generator.seed(seed)
-
- seed = np.array([-1], dtype=np.int32)
- with pytest.raises(ValueError):
- self.rg.bit_generator.seed(seed)
-
- seed = np.array([1, 2, 3, -5], dtype=np.int32)
- with pytest.raises(ValueError):
- self.rg.bit_generator.seed(seed)
-
- seed = np.array([1, 2, 3, out_of_bounds])
- with pytest.raises(ValueError):
- self.rg.bit_generator.seed(seed)
-
def test_uniform_float(self):
rg = Generator(self.bit_generator(12345))
warmup(rg)
@@ -777,54 +752,18 @@ class TestPhilox(RNG):
cls._extra_setup()
-class TestThreeFry(RNG):
+class TestSFC64(RNG):
@classmethod
def setup_class(cls):
- cls.bit_generator = ThreeFry
- cls.advance = 2 ** 63 + 2 ** 31 + 2 ** 15 + 1
- cls.seed = [12345]
- cls.rg = Generator(cls.bit_generator(*cls.seed))
- cls.initial_state = cls.rg.bit_generator.state
- cls.seed_vector_bits = 64
- cls._extra_setup()
-
-
-class TestXoshiro256(RNG):
- @classmethod
- def setup_class(cls):
- cls.bit_generator = Xoshiro256
+ cls.bit_generator = SFC64
cls.advance = None
cls.seed = [12345]
cls.rg = Generator(cls.bit_generator(*cls.seed))
cls.initial_state = cls.rg.bit_generator.state
- cls.seed_vector_bits = 64
+ cls.seed_vector_bits = 192
cls._extra_setup()
-class TestXoshiro512(RNG):
- @classmethod
- def setup_class(cls):
- cls.bit_generator = Xoshiro512
- cls.advance = None
- cls.seed = [12345]
- cls.rg = Generator(cls.bit_generator(*cls.seed))
- cls.initial_state = cls.rg.bit_generator.state
- cls.seed_vector_bits = 64
- cls._extra_setup()
-
-
-class TestDSFMT(RNG):
- @classmethod
- def setup_class(cls):
- cls.bit_generator = DSFMT
- cls.advance = None
- cls.seed = [12345]
- cls.rg = Generator(cls.bit_generator(*cls.seed))
- cls.initial_state = cls.rg.bit_generator.state
- cls._extra_setup()
- cls.seed_vector_bits = 32
-
-
class TestEntropy(object):
def test_entropy(self):
e1 = entropy.random_entropy()
@@ -843,52 +782,3 @@ class TestEntropy(object):
e2 = entropy.random_entropy(source='fallback')
assert_((e1 != e2))
-
-class TestPCG64(RNG):
- @classmethod
- def setup_class(cls):
- cls.bit_generator = PCG64
- cls.advance = 2 ** 96 + 2 ** 48 + 2 ** 21 + 2 ** 16 + 2 ** 5 + 1
- cls.seed = [2 ** 96 + 2 ** 48 + 2 ** 21 + 2 ** 16 + 2 ** 5 + 1,
- 2 ** 21 + 2 ** 16 + 2 ** 5 + 1]
- cls.rg = Generator(cls.bit_generator(*cls.seed))
- cls.initial_state = cls.rg.bit_generator.state
- cls.seed_vector_bits = None
- cls._extra_setup()
-
- def test_seed_array_error(self):
- # GH #82 for error type changes
- if self.seed_vector_bits == 32:
- out_of_bounds = 2 ** 32
- else:
- out_of_bounds = 2 ** 64
-
- seed = -1
- with pytest.raises(ValueError):
- self.rg.bit_generator.seed(seed)
-
- error_type = ValueError if self.seed_vector_bits else TypeError
- seed = np.array([-1], dtype=np.int32)
- with pytest.raises(error_type):
- self.rg.bit_generator.seed(seed)
-
- seed = np.array([1, 2, 3, -5], dtype=np.int32)
- with pytest.raises(error_type):
- self.rg.bit_generator.seed(seed)
-
- seed = np.array([1, 2, 3, out_of_bounds])
- with pytest.raises(error_type):
- self.rg.bit_generator.seed(seed)
-
-
-class TestPCG32(TestPCG64):
- @classmethod
- def setup_class(cls):
- cls.bit_generator = PCG32
- cls.advance = 2 ** 48 + 2 ** 21 + 2 ** 16 + 2 ** 5 + 1
- cls.seed = [2 ** 48 + 2 ** 21 + 2 ** 16 + 2 ** 5 + 1,
- 2 ** 21 + 2 ** 16 + 2 ** 5 + 1]
- cls.rg = Generator(cls.bit_generator(*cls.seed))
- cls.initial_state = cls.rg.bit_generator.state
- cls.seed_vector_bits = None
- cls._extra_setup()