Clean up recursive benchmark a tad
parent
7516041e36
commit
27d60007e2
|
@ -1,38 +1,37 @@
|
|||
USING: math kernel hints prettyprint io combinators ;
|
||||
IN: benchmark.recursive
|
||||
USING: math kernel hints prettyprint io ;
|
||||
|
||||
: fib ( m -- n )
|
||||
dup 2 < [ drop 1 ] [ dup 1 - fib swap 2 - fib + ] if ;
|
||||
dup 2 < [ drop 1 ] [ [ 1 - fib ] [ 2 - fib ] bi + ] if ;
|
||||
inline
|
||||
|
||||
: ack ( m n -- x )
|
||||
over zero? [
|
||||
nip 1+
|
||||
] [
|
||||
dup zero? [
|
||||
drop 1- 1 ack
|
||||
] [
|
||||
dupd 1- ack >r 1- r> ack
|
||||
] if
|
||||
] if ;
|
||||
{
|
||||
{ [ over zero? ] [ nip 1+ ] }
|
||||
{ [ dup zero? ] [ drop 1- 1 ack ] }
|
||||
[ [ drop 1- ] [ 1- ack ] 2bi ack ]
|
||||
} cond ; inline
|
||||
|
||||
: tak ( x y z -- t )
|
||||
2over swap < [
|
||||
[ rot 1- -rot tak ] 3keep
|
||||
[ -rot 1- -rot tak ] 3keep
|
||||
1- -rot tak
|
||||
tak
|
||||
] [
|
||||
2over <= [
|
||||
2nip
|
||||
] if ;
|
||||
] [
|
||||
[ rot 1- -rot tak ]
|
||||
[ -rot 1- -rot tak ]
|
||||
[ 1- -rot tak ]
|
||||
3tri
|
||||
tak
|
||||
] if ; inline
|
||||
|
||||
: recursive ( n -- )
|
||||
3 over ack . flush
|
||||
dup 27.0 + fib . flush
|
||||
1-
|
||||
dup 3 * over 2 * rot tak . flush
|
||||
[ 3 swap ack . flush ]
|
||||
[ 27.0 + fib . flush ]
|
||||
[ 1- [ 3 * ] [ 2 * ] [ ] tri tak . flush ] tri
|
||||
3 fib . flush
|
||||
3.0 2.0 1.0 tak . flush ;
|
||||
|
||||
HINTS: recursive fixnum ;
|
||||
|
||||
: recursive-main 11 recursive ;
|
||||
|
||||
MAIN: recursive-main
|
||||
|
|
Loading…
Reference in New Issue