packages feed

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 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"