diff options
Diffstat (limited to 'fib.hs')
-rw-r--r-- | fib.hs | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -0,0 +1,13 @@ +fib n = fi n 1 1 + +fi 1 x y = x +fi a x y = fi (a-1) (x+y) x + +ffib n = ffi n 1 1 1 0 1 0 + +ffi 1 a b c d x y = (a*x + b*y) +ffi n a b c d x y = + if odd n + then ffi (div n 2) (a*a + b*c) (a*b + b*d) (a*c + c*d) (d*d + b*c) (a*x + b*y) (c*x + d*y) + else ffi (div n 2) (a*a + b*c) (a*b + b*d) (a*c + c*d) (d*d + b*c) x y + |