From 27d60007e2c512fdd5e23dfccefb7cd6d4adc0f7 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 19 Apr 2008 02:11:18 -0500 Subject: [PATCH] Clean up recursive benchmark a tad --- extra/benchmark/recursive/recursive.factor | 43 +++++++++++----------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/extra/benchmark/recursive/recursive.factor b/extra/benchmark/recursive/recursive.factor index ee66e303ec..f69547df60 100755 --- a/extra/benchmark/recursive/recursive.factor +++ b/extra/benchmark/recursive/recursive.factor @@ -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