From 1fb4ea70c517050d3cbad75357a4fffbf5a40e7b Mon Sep 17 00:00:00 2001 From: Alberto Ruiz Date: Tue, 5 Jun 2007 10:09:17 +0000 Subject: working on contraction --- lib/Data/Packed/Internal/Matrix.hs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'lib/Data/Packed/Internal/Matrix.hs') 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 transdataC :: Int -> Vector (Complex Double) -> Int -> Vector (Complex Double) transdataC = transdataAux ctransC -transdataAux fun c1 d c2 = unsafePerformIO $ do - v <- createVector (dim d) - let r1 = dim d `div` c1 +transdataAux fun c1 d c2 = + if noneed + then d + else unsafePerformIO $ do + v <- createVector (dim d) + fun r1 c1 (ptr d) r2 c2 (ptr v) // check "transdataAux" [d] + putStrLn "---> transdataAux" + return v + where r1 = dim d `div` c1 r2 = dim d `div` c2 - fun r1 c1 (ptr d) r2 c2 (ptr v) // check "transdataAux" [d] - --putStrLn "---> transdataAux" - return v + noneed = r1 == 1 || c1 == 1 foreign import ccall safe "aux.h transR" ctransR :: Double ::> Double ::> IO Int -- cgit v1.2.3