diff options
Diffstat (limited to 'lib/Data/Packed/Internal/Matrix.hs')
-rw-r--r-- | lib/Data/Packed/Internal/Matrix.hs | 16 |
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 | |||
107 | transdataC :: Int -> Vector (Complex Double) -> Int -> Vector (Complex Double) | 107 | transdataC :: Int -> Vector (Complex Double) -> Int -> Vector (Complex Double) |
108 | transdataC = transdataAux ctransC | 108 | transdataC = transdataAux ctransC |
109 | 109 | ||
110 | transdataAux fun c1 d c2 = unsafePerformIO $ do | 110 | transdataAux 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 | ||
118 | foreign import ccall safe "aux.h transR" | 122 | foreign import ccall safe "aux.h transR" |
119 | ctransR :: Double ::> Double ::> IO Int | 123 | ctransR :: Double ::> Double ::> IO Int |