From 0fb0eaa1cf0a06244df7eb1bc3e5858b65b21c0e Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Tue, 25 Feb 2014 15:59:51 -0800 Subject: [PATCH] random: simplify using bitwise operations. --- basis/random/mersenne-twister/mersenne-twister.factor | 2 +- basis/random/sfmt/sfmt.factor | 4 ++-- extra/random/cmwc/cmwc.factor | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/basis/random/mersenne-twister/mersenne-twister.factor b/basis/random/mersenne-twister/mersenne-twister.factor index b0af9525ba..3b4e029778 100644 --- a/basis/random/mersenne-twister/mersenne-twister.factor +++ b/basis/random/mersenne-twister/mersenne-twister.factor @@ -36,7 +36,7 @@ CONSTANT: a uint-array{ 0 0x9908b0df } ] [ 0 >>i drop ] bi ; inline : init-mt-formula ( i seq -- f(seq[i]) ) - dupd nth dup -30 shift bitxor 1812433253 * + 1 + 32 bits ; inline + dupd nth dup -30 shift bitxor 1812433253 * + 1 w+ ; inline : init-mt-rest ( seq -- ) n 1 - swap '[ diff --git a/basis/random/sfmt/sfmt.factor b/basis/random/sfmt/sfmt.factor index 4777058bae..ca6e73158c 100644 --- a/basis/random/sfmt/sfmt.factor +++ b/basis/random/sfmt/sfmt.factor @@ -116,8 +116,8 @@ M:: sfmt generate ( sfmt -- ) [ [ [ -30 shift ] [ ] bi bitxor - state-multiplier * 32 bits - ] dip + 32 bits + state-multiplier w* + ] dip w+ ] uint-array{ } accumulate-as nip dup uint-4 cast-array ; diff --git a/extra/random/cmwc/cmwc.factor b/extra/random/cmwc/cmwc.factor index 9741889d1f..0f7103f9d9 100644 --- a/extra/random/cmwc/cmwc.factor +++ b/extra/random/cmwc/cmwc.factor @@ -43,14 +43,14 @@ M:: cmwc random-32* ( cmwc -- n ) [ c>> + ] tri [ >fixnum -32 shift cmwc c<< ] - [ cmwc [ b>> bitand ] [ c>> + ] bi 32 bits ] bi + [ cmwc [ b>> bitand ] [ c>> w+ ] bi ] bi dup cmwc r>> > [ cmwc [ 1 + ] change-c drop - cmwc b>> - 32 bits + cmwc b>> w- ] when - cmwc swap '[ r>> _ - 32 bits dup ] [ i>> ] [ Q>> ] tri set-nth-unsafe ; + cmwc swap '[ r>> _ w- dup ] [ i>> ] [ Q>> ] tri set-nth-unsafe ; : cmwc-4096 ( -- cmwc ) 4096