summaryrefslogtreecommitdiff
path: root/lib/Numeric/Chain.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Numeric/Chain.hs')
-rw-r--r--lib/Numeric/Chain.hs14
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/Numeric/Chain.hs b/lib/Numeric/Chain.hs
index 03ca88d..e1ab7da 100644
--- a/lib/Numeric/Chain.hs
+++ b/lib/Numeric/Chain.hs
@@ -98,11 +98,11 @@ minimum_cost :: (Sizes,Cost,Indexes) -> (Int,Int) -> (Sizes,Cost,Indexes)
98minimum_cost sci fu = foldl (smaller_cost fu) sci (fulcrum_order fu) 98minimum_cost sci fu = foldl (smaller_cost fu) sci (fulcrum_order fu)
99 99
100smaller_cost :: (Int,Int) -> (Sizes,Cost,Indexes) -> ((Int,Int),(Int,Int)) -> (Sizes,Cost,Indexes) 100smaller_cost :: (Int,Int) -> (Sizes,Cost,Indexes) -> ((Int,Int),(Int,Int)) -> (Sizes,Cost,Indexes)
101smaller_cost (r,c) (mz,cost,ixes) ix@((lr,lc),(rr,rc)) = let op_cost = (fromJust ((cost A.! lr) A.! lc)) 101smaller_cost (r,c) (mz,cost,ixes) ix@((lr,lc),(rr,rc)) = let op_cost = fromJust ((cost A.! lr) A.! lc)
102 + (fromJust ((cost A.! rr) A.! rc)) 102 + fromJust ((cost A.! rr) A.! rc)
103 + ((fst $ mz A.! (lr-lc+1)) 103 + fst (mz A.! (lr-lc+1))
104 *(snd $ mz A.! lc) 104 * snd (mz A.! lc)
105 *(snd $ mz A.! rr)) 105 * snd (mz A.! rr)
106 cost' = (cost A.! r) A.! c 106 cost' = (cost A.! r) A.! c
107 in case cost' of 107 in case cost' of
108 Nothing -> let cost'' = update cost (r,c) (Just op_cost) 108 Nothing -> let cost'' = update cost (r,c) (Just op_cost)
@@ -118,10 +118,10 @@ smaller_cost (r,c) (mz,cost,ixes) ix@((lr,lc),(rr,rc)) = let op_cost = (fromJust
118fulcrum_order (r,c) = let fs' = zip (repeat r) [1..(c-1)] 118fulcrum_order (r,c) = let fs' = zip (repeat r) [1..(c-1)]
119 in map (partner (r,c)) fs' 119 in map (partner (r,c)) fs'
120 120
121partner (r,c) (a,b) = (((r-b),(c-b)),(a,b)) 121partner (r,c) (a,b) = ((r-b, c-b), (a,b))
122 122
123order 0 = [] 123order 0 = []
124order n = (order (n-1)) ++ (zip (repeat n) [1..n]) 124order n = order (n-1) ++ zip (repeat n) [1..n]
125 125
126chain_paren :: Product a => (Int,Int) -> Indexes -> Matrices a -> Matrix a 126chain_paren :: Product a => (Int,Int) -> Indexes -> Matrices a -> Matrix a
127chain_paren (r,c) ixes ma = let ((lr,lc),(rr,rc)) = fromJust $ (ixes A.! r) A.! c 127chain_paren (r,c) ixes ma = let ((lr,lc),(rr,rc)) = fromJust $ (ixes A.! r) A.! c