diff --git a/extra/math/erato/erato.factor b/extra/math/erato/erato.factor index b9d997c038..f836d71a99 100644 --- a/extra/math/erato/erato.factor +++ b/extra/math/erato/erato.factor @@ -1,7 +1,7 @@ ! Copyright (c) 2007 Samuel Tardieu. ! See http://factorcode.org/license.txt for BSD license. USING: bit-arrays kernel lists.lazy math math.functions math.primes.list - math.ranges sequences ; + math.ranges sequences accessors ; IN: math.erato r ind r> erato-bits nth ; inline + >r ind r> bits>> nth ; inline : indices ( n erato -- range ) - erato-limit ind over 3 * ind swap rot ; + limit>> ind over 3 * ind swap rot ; : mark-multiples ( n erato -- ) - over sq over erato-limit <= - [ [ indices ] keep erato-bits [ f -rot set-nth ] curry each ] [ 2drop ] if ; + over sq over limit>> <= + [ [ indices ] keep bits>> [ f -rot set-nth ] curry each ] [ 2drop ] if ; : ( n -- erato ) dup ind 1+ 1 over set-bits erato boa ; : next-prime ( erato -- prime/f ) - [ erato-latest 2 + ] keep [ set-erato-latest ] 2keep - 2dup erato-limit <= + [ 2 + ] change-latest [ latest>> ] keep + 2dup limit>> <= [ 2dup is-prime [ dupd mark-multiples ] [ nip next-prime ] if ] [