-USING: math kernel debugger ;
+USING: accessors math kernel debugger ;
IN: benchmark.fib4
-TUPLE: box i ;
+TUPLE: box { i read-only } ;
C: <box> box
: tuple-fib ( m -- n )
- dup box-i 1 <= [
+ dup i>> 1 <= [
drop 1 <box>
] [
- box-i 1- <box>
+ i>> 1 - <box>
dup tuple-fib
swap
- box-i 1- <box>
+ i>> 1 - <box>
tuple-fib
- swap box-i swap box-i + <box>
- ] if ;
+ swap i>> swap i>> + <box>
+ ] if ; inline recursive
-: fib-main ( -- ) T{ box f 34 } tuple-fib T{ box f 9227465 } assert= ;
+: fib-main ( -- ) T{ box f 34 } tuple-fib i>> 9227465 assert= ;
MAIN: fib-main