From a762bf89d97fab01b579ba41fa34969d7d38e6ae Mon Sep 17 00:00:00 2001 From: Noah <33094578+coolreader18@users.noreply.github.com> Date: Mon, 3 Feb 2020 18:27:35 -0600 Subject: [PATCH] Move gen_res53 to mersenne.rs --- vm/src/stdlib/random.rs | 11 +---------- vm/src/stdlib/random/mersenne.rs | 8 ++++++++ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/vm/src/stdlib/random.rs b/vm/src/stdlib/random.rs index 46e58d45f..80acd18eb 100644 --- a/vm/src/stdlib/random.rs +++ b/vm/src/stdlib/random.rs @@ -77,7 +77,7 @@ impl PyRandom { #[pymethod] fn random(&self) -> f64 { - gen_res53(&mut *self.rng.borrow_mut()) + mersenne::gen_res53(&mut *self.rng.borrow_mut()) } #[pymethod] @@ -127,12 +127,3 @@ pub fn make_module(vm: &VirtualMachine) -> PyObjectRef { "Random" => PyRandom::make_class(ctx), }) } - -// taken from the translated mersenne twister -/* generates a random number on [0,1) with 53-bit resolution*/ -fn gen_res53(rng: &mut R) -> f64 { - let a = rng.next_u32() >> 5; - let b = rng.next_u32() >> 6; - (a as f64 * 67108864.0 + b as f64) * (1.0 / 9007199254740992.0) -} -/* These real versions are due to Isaku Wada, 2002/01/09 added */ diff --git a/vm/src/stdlib/random/mersenne.rs b/vm/src/stdlib/random/mersenne.rs index d4732a6ff..d7e2efc2f 100644 --- a/vm/src/stdlib/random/mersenne.rs +++ b/vm/src/stdlib/random/mersenne.rs @@ -186,6 +186,14 @@ impl MT19937 { } } +/* generates a random number on [0,1) with 53-bit resolution*/ +pub fn gen_res53(rng: &mut R) -> f64 { + let a = rng.next_u32() >> 5; + let b = rng.next_u32() >> 6; + (a as f64 * 67108864.0 + b as f64) * (1.0 / 9007199254740992.0) +} +/* These real versions are due to Isaku Wada, 2002/01/09 added */ + impl rand::RngCore for MT19937 { fn next_u32(&mut self) -> u32 { self.gen_u32()