]> gitweb.factorcode.org Git - factor.git/blob - extra/benchmark/nsieve-bytes/nsieve-bytes.factor
Delete empty unit tests files, remove 1- and 1+, reorder IN: lines in a lot of places...
[factor.git] / extra / benchmark / nsieve-bytes / nsieve-bytes.factor
1 IN: benchmark.nsieve-bytes
2 USING: math math.parser sequences sequences.private kernel
3 byte-arrays make io ;
4
5 : clear-flags ( step i seq -- )
6     2dup length >= [
7         3drop
8     ] [
9         0 2over set-nth-unsafe [ over + ] dip clear-flags
10     ] if ; inline recursive
11
12 : (nsieve) ( count i seq -- count )
13     2dup length < [
14         2dup nth-unsafe 0 > [
15             over dup 2 * pick clear-flags
16             rot 1 + -rot ! increment count
17         ] when [ 1 + ] dip (nsieve)
18     ] [
19         2drop
20     ] if ; inline recursive
21
22 : nsieve ( m -- count )
23     0 2 rot 1 + <byte-array> dup [ drop 1 ] change-each (nsieve) ;
24
25 : nsieve. ( m -- )
26     [ "Primes up to " % dup # " " % nsieve # ] "" make print ;
27
28 : nsieve-main ( n -- )
29     dup 2^ 10000 * nsieve.
30     dup 1 - 2^ 10000 * nsieve.
31     2 - 2^ 10000 * nsieve. ;
32
33 : nsieve-main* ( -- ) 9 nsieve-main ;
34
35 MAIN: nsieve-main*