Removing rot/-rot in nsieve and nsieve-bits
parent
19d551a544
commit
93282bcc94
|
|
@ -1,5 +1,5 @@
|
||||||
USING: math math.parser sequences sequences.private kernel
|
USING: math math.parser sequences sequences.private kernel
|
||||||
bit-arrays make io ;
|
bit-arrays make io math.ranges multiline fry locals ;
|
||||||
IN: benchmark.nsieve-bits
|
IN: benchmark.nsieve-bits
|
||||||
|
|
||||||
: clear-flags ( step i seq -- )
|
: clear-flags ( step i seq -- )
|
||||||
|
|
@ -13,23 +13,24 @@ IN: benchmark.nsieve-bits
|
||||||
2dup length < [
|
2dup length < [
|
||||||
2dup nth-unsafe [
|
2dup nth-unsafe [
|
||||||
over dup 2 * pick clear-flags
|
over dup 2 * pick clear-flags
|
||||||
rot 1 + -rot ! increment count
|
[ 1 + ] 2dip ! increment count
|
||||||
] when [ 1 + ] dip (nsieve-bits)
|
] when [ 1 + ] dip (nsieve-bits)
|
||||||
] [
|
] [
|
||||||
2drop
|
2drop
|
||||||
] if ; inline recursive
|
] if ; inline recursive
|
||||||
|
|
||||||
: nsieve-bits ( m -- count )
|
: 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 -- )
|
: nsieve-bits. ( m -- )
|
||||||
[ "Primes up to " % dup # " " % nsieve-bits # ] "" make
|
[ "Primes up to " % dup # " " % nsieve-bits # ] "" make
|
||||||
print ;
|
print ; inline
|
||||||
|
|
||||||
: nsieve-bits-main ( n -- )
|
: nsieve-bits-main ( n -- )
|
||||||
dup 2^ 10000 * nsieve-bits.
|
[ 2^ 10000 * nsieve-bits. ]
|
||||||
dup 1 - 2^ 10000 * nsieve-bits.
|
[ 1 - 2^ 10000 * nsieve-bits. ]
|
||||||
2 - 2^ 10000 * nsieve-bits. ;
|
[ 2 - 2^ 10000 * nsieve-bits. ]
|
||||||
|
tri ;
|
||||||
|
|
||||||
: nsieve-bits-main* ( -- ) 11 nsieve-bits-main ;
|
: nsieve-bits-main* ( -- ) 11 nsieve-bits-main ;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,22 +13,23 @@ IN: benchmark.nsieve
|
||||||
2dup length < [
|
2dup length < [
|
||||||
2dup nth-unsafe [
|
2dup nth-unsafe [
|
||||||
over dup 2 * pick clear-flags
|
over dup 2 * pick clear-flags
|
||||||
rot 1 + -rot ! increment count
|
[ 1 + ] 2dip ! increment count
|
||||||
] when [ 1 + ] dip (nsieve)
|
] when [ 1 + ] dip (nsieve)
|
||||||
] [
|
] [
|
||||||
2drop
|
2drop
|
||||||
] if ; inline recursive
|
] if ; inline recursive
|
||||||
|
|
||||||
: nsieve ( m -- count )
|
: nsieve ( m -- count )
|
||||||
0 2 rot 1 + t <array> (nsieve) ;
|
[ 0 2 ] dip 1 + t <array> (nsieve) ;
|
||||||
|
|
||||||
: nsieve. ( m -- )
|
: nsieve. ( m -- )
|
||||||
[ "Primes up to " % dup # " " % nsieve # ] "" make print ;
|
[ "Primes up to " % dup # " " % nsieve # ] "" make print ;
|
||||||
|
|
||||||
: nsieve-main ( n -- )
|
: nsieve-main ( n -- )
|
||||||
dup 2^ 10000 * nsieve.
|
[ 2^ 10000 * nsieve. ]
|
||||||
dup 1 - 2^ 10000 * nsieve.
|
[ 1 - 2^ 10000 * nsieve. ]
|
||||||
2 - 2^ 10000 * nsieve. ;
|
[ 2 - 2^ 10000 * nsieve. ]
|
||||||
|
tri ;
|
||||||
|
|
||||||
: nsieve-main* ( -- ) 9 nsieve-main ;
|
: nsieve-main* ( -- ) 9 nsieve-main ;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue