factor/extra/benchmark/fib7/fib7.factor

24 lines
485 B
Factor

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