blob: 647f75eadf8b309d3757c9c4d8977726cad127fd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
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
|