A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
|
|
@ -0,0 +1,9 @@
|
|||
import Data.List
|
||||
|
||||
mmult :: Num a => [[a]] -> [[a]] -> [[a]]
|
||||
mmult a b = [ [ sum $ zipWith (*) ar bc | bc <- (transpose b) ] | ar <- a ]
|
||||
|
||||
-- Example use:
|
||||
test = [[1, 2],
|
||||
[3, 4]] `mmult` [[-3, -8, 3],
|
||||
[-2, 1, 4]]
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import Data.Array
|
||||
|
||||
mmult :: (Ix i, Num a) => Array (i,i) a -> Array (i,i) a -> Array (i,i) a
|
||||
mmult x y
|
||||
| x1 /= y0 || x1' /= y0' = error "range mismatch"
|
||||
| otherwise = array ((x0,y1),(x0',y1')) l
|
||||
where
|
||||
((x0,x1),(x0',x1')) = bounds x
|
||||
((y0,y1),(y0',y1')) = bounds y
|
||||
ir = range (x0,x0')
|
||||
jr = range (y1,y1')
|
||||
kr = range (x1,x1')
|
||||
l = [((i,j), sum [x!(i,k) * y!(k,j) | k <- kr]) | i <- ir, j <- jr]
|
||||
Loading…
Add table
Add a link
Reference in a new issue