summaryrefslogtreecommitdiffstats
path: root/AufgabeFFP2.hs
diff options
context:
space:
mode:
authorMatthias Wisniowski <matthias.wisniowski@gmail.com>2012-03-26 00:15:48 +0200
committerMatthias Wisniowski <matthias.wisniowski@gmail.com>2012-03-26 00:15:48 +0200
commit8613f7154f815835fc5e6ddbe15e9aebc62109b1 (patch)
treee07b8b77378d6bd99ac83f7615c1fac775419008 /AufgabeFFP2.hs
parentd01a91022cc55841cf968a60ecee8f27b57b88e2 (diff)
downloadffp-8613f7154f815835fc5e6ddbe15e9aebc62109b1.tar.gz
ffp-8613f7154f815835fc5e6ddbe15e9aebc62109b1.tar.bz2
ffp-8613f7154f815835fc5e6ddbe15e9aebc62109b1.zip
Fixed different values for h-function
Using Integer instead of Int solved the difference in values for the different h-functions. Apparently they have equal performance. Added basic testcases.
Diffstat (limited to 'AufgabeFFP2.hs')
-rw-r--r--AufgabeFFP2.hs18
1 files changed, 9 insertions, 9 deletions
diff --git a/AufgabeFFP2.hs b/AufgabeFFP2.hs
index 9e466b7..7993c01 100644
--- a/AufgabeFFP2.hs
+++ b/AufgabeFFP2.hs
@@ -56,23 +56,23 @@ facGen = map (fac) [1..]
56 56
57-- function g with memoization (using hFast) 57-- function g with memoization (using hFast)
58fMT :: Int -> Int -> Float 58fMT :: Int -> Int -> Float
59fMT z k = g z k hFast 59fMT z k = g z k hMT
60 60
61-- function g without memoization (uning hSlow) 61-- function g without memoization (uning hSlow)
62f :: Int -> Int -> Float 62f :: Int -> Int -> Float
63f z k = g z k hSlow 63f z k = g z k h
64 64
65-- actual function g 65-- actual function g (converts Int to Integer for more precision)
66g :: Int -> Int -> (Int -> Int -> Float) -> Float 66g :: Int -> Int -> (Integer -> Integer -> Float) -> Float
67g z k h = sum $ map (h z) [1..k] 67g z k h = sum $ map (h $ fromIntegral z) [1..(fromIntegral k)]
68 68
69-- helper function h using mem-table for the power-series (z^i) and for faculty (i!) 69-- helper function h using mem-table for the power-series (z^i) and for faculty (i!)
70hFast :: Int -> Int -> Float 70hMT :: Integer -> Integer -> Float
71hFast z i = (fromInteger $ pofNs (fromIntegral z) !! i) / (fromInteger $ facGen !! (i-1)) 71hMT z i = (fromInteger $ pofNs z !! (fromInteger i)) / (fromInteger $ facGen !! ((fromIntegral i)-1))
72 72
73-- helper function h without memoization 73-- helper function h without memoization
74hSlow :: Int -> Int -> Float 74h :: Integer -> Integer -> Float
75hSlow z i = (fromIntegral $ z^i) / (fromInteger $ fac $ fromIntegral i) 75h z i = (fromInteger $ z^i) / (fromInteger $ fac i)
76 76
77------------------------------------------------------------------------------- 77-------------------------------------------------------------------------------
78 78