haskell-eigen-util 0.1.0.3 → 0.1.0.4
raw patch · 3 files changed
+19/−14 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- Data/Eigen/Util.hs +7/−4
- haskell-eigen-util.cabal +1/−1
- test/Spec.hs +11/−9
Data/Eigen/Util.hs view
@@ -68,11 +68,14 @@ vstack mats = E.transpose $ hstack $ L.map E.transpose mats -- | Kronecker matric multiplication.-kronecker mat1 mat2 = vstack $ L.map hstack result+kronecker :: E.Elem a b => E.Matrix a b -> E.Matrix a b -> E.Matrix a b+kronecker mat1 mat2 = E.imap (\i j v -> + (mat1 E.! (div i x, div j y)) * ( mat2 E.! (rem i x, rem j y))+ ) resMat where- result = to2DList c1 $ L.reverse $ E.fold ( \c e -> ((E.map (*e) mat2):c) ) [] mat1 - [ (r1,c1), (r2,c2) ] = [ E.dims mat1, E.dims mat2 ]- (r, c) = ( r1*r2, c1*c2 )+ [ (p,q), (x,y) ] = [ E.dims mat1, E.dims mat2 ]+ (r, c) = ( p*x, q*y )+ resMat = E.zero r c -- | rowAdd r1 = r1 + k * r2 rowAdd :: E.Elem a b => Int -> (a, Int) -> E.Matrix a b -> E.Matrix a b
haskell-eigen-util.cabal view
@@ -1,5 +1,5 @@ name: haskell-eigen-util-version: 0.1.0.3+version: 0.1.0.4 synopsis: Some utility functions for haskell-eigen library description: Please see README.md homepage: https://github.com/dilawar/haskell-eigen-util#README.md
test/Spec.hs view
@@ -1,17 +1,19 @@- import qualified Data.Eigen.Matrix as E import Data.Eigen.Util -testKronecker m1 m2 = kronecker m1 m2 -mat1 = E.fromList [ [0.85, 0.15], [0.1, 0.9] ] :: E.MatrixXd -mat2 = E.fromList [ [0.8, 0.2], [0.05, 0.95] ] :: E.MatrixXd +mat1 = E.fromList [ [1, 2], [3, 4] ] :: E.MatrixXd +mat2 = E.fromList [ [5, 6], [7, 8] ] :: E.MatrixXd +res = E.fromList [ [5,6,10,12], [7,8,14,16], [15, 18, 20, 24], [21, 24, 28, 32 ] ] :: E.MatrixXd +testKronecker m1 m2 = do + pprintIO m1+ pprintIO m2+ pprintIO res+ pprintIO $ kronecker m1 m2+ putStrLn "Test done"+ main :: IO () main = do - pprintIO mat1- pprintIO mat2- let res = kronecker mat1 mat2- {-pprintIO res-}- print $ res+ testKronecker mat1 mat2 putStrLn "All done"