summaryrefslogtreecommitdiff
path: root/lib/Data/Packed/Internal/Matrix.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Data/Packed/Internal/Matrix.hs')
-rw-r--r--lib/Data/Packed/Internal/Matrix.hs16
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/Data/Packed/Internal/Matrix.hs b/lib/Data/Packed/Internal/Matrix.hs
index 2c57c07..a6f7f0c 100644
--- a/lib/Data/Packed/Internal/Matrix.hs
+++ b/lib/Data/Packed/Internal/Matrix.hs
@@ -107,13 +107,17 @@ transdataR = transdataAux ctransR
107transdataC :: Int -> Vector (Complex Double) -> Int -> Vector (Complex Double) 107transdataC :: Int -> Vector (Complex Double) -> Int -> Vector (Complex Double)
108transdataC = transdataAux ctransC 108transdataC = transdataAux ctransC
109 109
110transdataAux fun c1 d c2 = unsafePerformIO $ do 110transdataAux fun c1 d c2 =
111 v <- createVector (dim d) 111 if noneed
112 let r1 = dim d `div` c1 112 then d
113 else unsafePerformIO $ do
114 v <- createVector (dim d)
115 fun r1 c1 (ptr d) r2 c2 (ptr v) // check "transdataAux" [d]
116 putStrLn "---> transdataAux"
117 return v
118 where r1 = dim d `div` c1
113 r2 = dim d `div` c2 119 r2 = dim d `div` c2
114 fun r1 c1 (ptr d) r2 c2 (ptr v) // check "transdataAux" [d] 120 noneed = r1 == 1 || c1 == 1
115 --putStrLn "---> transdataAux"
116 return v
117 121
118foreign import ccall safe "aux.h transR" 122foreign import ccall safe "aux.h transR"
119 ctransR :: Double ::> Double ::> IO Int 123 ctransR :: Double ::> Double ::> IO Int