2dup length < [
2dup nth-unsafe [
over dup 2 * pick clear-flags
- rot 1 + -rot ! increment count
+ [ 1 + ] 2dip ! increment count
] when [ 1 + ] dip (nsieve-bits)
] [
2drop
] if ; inline recursive
: nsieve-bits ( m -- count )
- 0 2 rot 1 + <bit-array> dup set-bits (nsieve-bits) ;
+ [ 0 2 ] dip 1 + <bit-array> dup set-bits (nsieve-bits) ;
: nsieve-bits. ( m -- )
[ "Primes up to " % dup # " " % nsieve-bits # ] "" make
- print ;
+ print ; inline
: nsieve-bits-main ( n -- )
- dup 2^ 10000 * nsieve-bits.
- dup 1 - 2^ 10000 * nsieve-bits.
- 2 - 2^ 10000 * nsieve-bits. ;
+ [ 2^ 10000 * nsieve-bits. ]
+ [ 1 - 2^ 10000 * nsieve-bits. ]
+ [ 2 - 2^ 10000 * nsieve-bits. ]
+ tri ;
-: nsieve-bits-main* ( -- ) 11 nsieve-bits-main ;
+: nsieve-bits-benchmark ( -- ) 11 nsieve-bits-main ;
-MAIN: nsieve-bits-main*
+MAIN: nsieve-bits-benchmark