]> gitweb.factorcode.org Git - factor.git/blob - extra/benchmark/recursive/recursive.factor
factor: put inline on same line as ; for experimentation
[factor.git] / extra / benchmark / recursive / recursive.factor
1 USING: math kernel hints prettyprint io combinators ;
2 IN: benchmark.recursive
3
4 : fib ( m -- n )
5     dup 2 <
6     [ drop 1 ]
7     [ [ 1 - fib ] [ 2 - fib ] bi + ] if ; inline recursive
8
9 : ack ( m n -- x )
10     {
11         { [ over zero? ] [ nip 1 + ] }
12         { [ dup zero? ] [ drop 1 - 1 ack ] }
13         [ [ drop 1 - ] [ 1 - ack ] 2bi ack ]
14     } cond ; inline recursive
15
16 : tak ( x y z -- t )
17     2over <= [
18         2nip
19     ] [
20         [  rot 1 - -rot tak ]
21         [ -rot 1 - -rot tak ]
22         [      1 - -rot tak ]
23         3tri
24         tak
25     ] if ; inline recursive
26
27 : recursive ( n -- )
28     [ 3 swap ack . flush ]
29     [ 27.0 + fib . flush ]
30     [ 1 - [ 3 * ] [ 2 * ] [ ] tri tak . flush ] tri
31     3 fib . flush
32     3.0 2.0 1.0 tak . flush ;
33
34 HINTS: recursive fixnum ;
35
36 : recursive-benchmark ( -- ) 10 recursive ;
37
38 MAIN: recursive-benchmark