2008-08-30 21:38:07 -04:00
|
|
|
USING: accessors math kernel debugger ;
|
2007-09-20 18:09:08 -04:00
|
|
|
IN: benchmark.fib4
|
|
|
|
|
2008-08-31 10:03:03 -04:00
|
|
|
TUPLE: box { i read-only } ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
C: <box> box
|
|
|
|
|
|
|
|
: tuple-fib ( m -- n )
|
2008-08-30 21:38:07 -04:00
|
|
|
dup i>> 1 <= [
|
2007-09-20 18:09:08 -04:00
|
|
|
drop 1 <box>
|
|
|
|
] [
|
2009-08-13 20:21:44 -04:00
|
|
|
i>> 1 - <box>
|
2007-09-20 18:09:08 -04:00
|
|
|
dup tuple-fib
|
|
|
|
swap
|
2009-08-13 20:21:44 -04:00
|
|
|
i>> 1 - <box>
|
2007-09-20 18:09:08 -04:00
|
|
|
tuple-fib
|
2008-08-30 21:38:07 -04:00
|
|
|
swap i>> swap i>> + <box>
|
2008-08-31 10:03:03 -04:00
|
|
|
] if ; inline recursive
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2012-07-19 00:17:34 -04:00
|
|
|
: fib4-benchmark ( -- ) T{ box f 34 } tuple-fib i>> 9227465 assert= ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2012-07-19 00:17:34 -04:00
|
|
|
MAIN: fib4-benchmark
|