diff --git a/extra/benchmark/fib7/fib7.factor b/extra/benchmark/fib7/fib7.factor new file mode 100644 index 0000000000..9e0dab0fd4 --- /dev/null +++ b/extra/benchmark/fib7/fib7.factor @@ -0,0 +1,23 @@ +USING: kernel locals math math.parser sequences ; +IN: benchmark.fib7 + +:: matrix-fib ( m -- n ) + m 0 >= [ m throw ] unless + m 2 >base [ CHAR: 1 = ] { } map-as :> bits + 1 :> a! 0 :> b! 1 :> c! + bits [ + [ + a c + b * + b sq c sq + + ] [ + a sq b sq + + a c + b * + ] if b! a! a b + c! + ] each b ; + +: fib7-benchmark ( -- ) + 100 [ + 100,000 matrix-fib log2 69423 assert= + ] times ; + +MAIN: fib7-benchmark