summaryrefslogtreecommitdiff
path: root/fib.hs
diff options
context:
space:
mode:
authorJoe Zhao <ztuowen@gmail.com>2014-08-09 10:58:03 +0800
committerJoe Zhao <ztuowen@gmail.com>2014-08-09 10:58:03 +0800
commit5bdaa1e4ffe40add10f000ee993e6b500c419a37 (patch)
tree46a624488ece8d37fa3580422234ed2b4acc6728 /fib.hs
parent01aa73b269f7ad780233be338affdf3c9288b1ed (diff)
downloadhaskbox-old-5bdaa1e4ffe40add10f000ee993e6b500c419a37.tar.gz
haskbox-old-5bdaa1e4ffe40add10f000ee993e6b500c419a37.tar.bz2
haskbox-old-5bdaa1e4ffe40add10f000ee993e6b500c419a37.zip
add files from home for previous chapters and sandboxes
Diffstat (limited to 'fib.hs')
-rw-r--r--fib.hs13
1 files changed, 13 insertions, 0 deletions
diff --git a/fib.hs b/fib.hs
new file mode 100644
index 0000000..647f75e
--- /dev/null
+++ b/fib.hs
@@ -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
+