]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/random/cmwc/cmwc.factor
factor: trim using lists
[factor.git] / extra / random / cmwc / cmwc.factor
index 3fda392d805ab4ee2ab5a23eec0f24d2984d4edd..8478af0c402c1040ccadf1bf89b4a3d8cb8bdcae 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2009 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien.c-types arrays fry kernel locals math
-math.bitwise random sequences sequences.private
+USING: accessors alien.c-types alien.data kernel
+math math.bitwise random sequences sequences.private
 specialized-arrays ;
 SPECIALIZED-ARRAY: uint
 IN: random.cmwc
@@ -24,7 +24,7 @@ TUPLE: cmwc-seed { Q uint-array read-only } { c read-only } ;
         swap >>c
         swap >>b
         swap >>a
-        swap [ 1 - >>i ] [ <uint-array> >>Q ] bi
+        swap [ 1 - >>i ] [ uint <c-array> >>Q ] bi
         dup b>> 1 - >>r
         dup Q>> length 1 - >>mod ; inline
 
@@ -42,15 +42,15 @@ M:: cmwc random-32* ( cmwc -- n )
     [ [ i>> ] [ Q>> ] bi nth-unsafe * ]
     [ c>> + ] tri
 
-    [ >fixnum -32 shift cmwc (>>c) ]
-    [ cmwc [ b>> bitand ] [ c>> + ] bi 32 bits ] bi
+    [ >fixnum -32 shift cmwc c<< ]
+    [ 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