From 800b134fa740203f56504137d283749d2f3ce925 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 11 Sep 2008 01:11:17 -0500 Subject: [PATCH] random numbers were endian-dependent. clean up blum-blum-shub a bit --- basis/random/random.factor | 2 +- extra/random/blum-blum-shub/blum-blum-shub-tests.factor | 2 -- extra/random/blum-blum-shub/blum-blum-shub.factor | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/basis/random/random.factor b/basis/random/random.factor index 515c464a5a..5ee45e6729 100755 --- a/basis/random/random.factor +++ b/basis/random/random.factor @@ -14,7 +14,7 @@ GENERIC: random-32* ( tuple -- r ) GENERIC: random-bytes* ( n tuple -- byte-array ) M: object random-bytes* ( n tuple -- byte-array ) - swap [ drop random-32* ] with map >c-uint-array ; + [ random-32* ] curry replicate [ 4 >le ] map concat ; M: object random-32* ( tuple -- r ) 4 random-bytes* le> ; diff --git a/extra/random/blum-blum-shub/blum-blum-shub-tests.factor b/extra/random/blum-blum-shub/blum-blum-shub-tests.factor index 9ace53ab25..4b0dee642e 100644 --- a/extra/random/blum-blum-shub/blum-blum-shub-tests.factor +++ b/extra/random/blum-blum-shub/blum-blum-shub-tests.factor @@ -11,14 +11,12 @@ IN: blum-blum-shub.tests [ 70576473 ] [ T{ blum-blum-shub f 590695557939 811977232793 } clone [ 32 random-bits - little-endian? [ reverse *uint ] unless ] with-random ] unit-test [ 5570804936418322777 ] [ T{ blum-blum-shub f 590695557939 811977232793 } clone [ 64 random-bits - little-endian? [ 4 group [ reverse ] map concat *ulonglong ] unless ] with-random ] unit-test diff --git a/extra/random/blum-blum-shub/blum-blum-shub.factor b/extra/random/blum-blum-shub/blum-blum-shub.factor index e60990075c..8e9f0e2552 100755 --- a/extra/random/blum-blum-shub/blum-blum-shub.factor +++ b/extra/random/blum-blum-shub/blum-blum-shub.factor @@ -13,7 +13,7 @@ TUPLE: blum-blum-shub x n ; [ [ random-prime ] curry [ 4 mod 3 = ] generate ] dup bi ; : next-bbs-bit ( bbs -- bit ) - [ [ x>> 2 ] [ n>> ] bi ^mod dup ] keep (>>x) 1 bitand ; + dup [ x>> 2 ] [ n>> ] bi ^mod [ >>x drop ] [ 1 bitand ] bi ; PRIVATE>