 ! 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 specialized-arrays
-specialized-arrays.instances.uint ;
+math.bitwise random sequences sequences.private
+specialized-arrays specialized-arrays.instances.uint ;
 IN: random.cmwc
 
 ! Multiply-with-carry RNG

        t cmwc b>> - 32 bits t!
    ] when

    cmwc [ r>> t - 32 bits dup ] [ i>> ] [ Q>> ] tri set-nth ;

: cmwc-4096 ( -- cmwc )
    4096

        swap >>a
        swap [ 1 - >>i ] [ <uint-array> >>Q ] bi
        dup b>> 1 - >>r
        dup Q>> length 1 - >>mod ; inline

: <cmwc-seed> ( Q c -- cmwc-seed )
    cmwc-seed boa ; inline
