summaryrefslogtreecommitdiff
path: root/packages/base/src/Numeric
diff options
context:
space:
mode:
authorAlberto Ruiz <aruiz@um.es>2015-05-28 09:17:40 +0200
committerAlberto Ruiz <aruiz@um.es>2015-05-28 12:25:20 +0200
commit3f68d78613ed61540c38548fb3b7e8fca77a85d2 (patch)
tree229661ff3c051036b0ce422059fe0517a3dd5366 /packages/base/src/Numeric
parentf05ef81b63e4ee6403433919ce48f223cf0b1e45 (diff)
use omat for multiplyI
Diffstat (limited to 'packages/base/src/Numeric')
-rw-r--r--packages/base/src/Numeric/LinearAlgebra/LAPACK.hs10
1 files changed, 7 insertions, 3 deletions
diff --git a/packages/base/src/Numeric/LinearAlgebra/LAPACK.hs b/packages/base/src/Numeric/LinearAlgebra/LAPACK.hs
index 219d996..6fb2b13 100644
--- a/packages/base/src/Numeric/LinearAlgebra/LAPACK.hs
+++ b/packages/base/src/Numeric/LinearAlgebra/LAPACK.hs
@@ -58,7 +58,7 @@ foreign import ccall unsafe "multiplyR" dgemmc :: CInt -> CInt -> TMMM
58foreign import ccall unsafe "multiplyC" zgemmc :: CInt -> CInt -> TCMCMCM 58foreign import ccall unsafe "multiplyC" zgemmc :: CInt -> CInt -> TCMCMCM
59foreign import ccall unsafe "multiplyF" sgemmc :: CInt -> CInt -> TFMFMFM 59foreign import ccall unsafe "multiplyF" sgemmc :: CInt -> CInt -> TFMFMFM
60foreign import ccall unsafe "multiplyQ" cgemmc :: CInt -> CInt -> TQMQMQM 60foreign import ccall unsafe "multiplyQ" cgemmc :: CInt -> CInt -> TQMQMQM
61foreign import ccall unsafe "multiplyI" c_multiplyI :: CInt -> CInt -> (CM CInt (CM CInt (CM CInt (IO CInt)))) 61foreign import ccall unsafe "multiplyI" c_multiplyI :: OM CInt (OM CInt (OM CInt (IO CInt)))
62 62
63isT Matrix{order = ColumnMajor} = 0 63isT Matrix{order = ColumnMajor} = 0
64isT Matrix{order = RowMajor} = 1 64isT Matrix{order = RowMajor} = 1
@@ -90,8 +90,12 @@ multiplyQ :: Matrix (Complex Float) -> Matrix (Complex Float) -> Matrix (Complex
90multiplyQ a b = multiplyAux cgemmc "cgemmc" a b 90multiplyQ a b = multiplyAux cgemmc "cgemmc" a b
91 91
92multiplyI :: Matrix CInt -> Matrix CInt -> Matrix CInt 92multiplyI :: Matrix CInt -> Matrix CInt -> Matrix CInt
93multiplyI = multiplyAux c_multiplyI "c_multiplyI" 93multiplyI a b = unsafePerformIO $ do
94 94 when (cols a /= rows b) $ error $
95 "inconsistent dimensions in matrix product "++ shSize a ++ " x " ++ shSize b
96 s <- createMatrix ColumnMajor (rows a) (cols b)
97 app3 c_multiplyI omat a omat b omat s "c_multiplyI"
98 return s
95 99
96----------------------------------------------------------------------------- 100-----------------------------------------------------------------------------
97foreign import ccall unsafe "svd_l_R" dgesvd :: TMMVM 101foreign import ccall unsafe "svd_l_R" dgesvd :: TMMVM