]> gitweb.factorcode.org Git - factor.git/blob - extra/benchmark/fib7/fib7.factor
factor: trim using lists
[factor.git] / extra / benchmark / fib7 / fib7.factor
1 USING: kernel math math.parser sequences ;
2 IN: benchmark.fib7
3
4 :: matrix-fib ( m -- n )
5     m 0 >= [ m throw ] unless
6     m 2 >base [ CHAR: 1 = ] { } map-as :> bits
7     1 :> a! 0 :> b! 1 :> c!
8     bits [
9         [
10             a c + b *
11             b sq c sq +
12         ] [
13             a sq b sq +
14             a c + b *
15         ] if b! a! a b + c!
16     ] each b ;
17
18 : fib7-benchmark ( -- )
19     100 [
20         100,000 matrix-fib log2 69423 assert=
21     ] times ;
22
23 MAIN: fib7-benchmark