summaryrefslogtreecommitdiff
path: root/lib/Data/Packed/Internal
diff options
context:
space:
mode:
authorAlberto Ruiz <aruiz@um.es>2009-06-18 08:39:56 +0000
committerAlberto Ruiz <aruiz@um.es>2009-06-18 08:39:56 +0000
commit2caea08c65f6d881459de64f5f7c8c7886337806 (patch)
tree3bc54c5e3faebba536c30fc5ce10906d2936eaea /lib/Data/Packed/Internal
parent5db2ed78986bbc737b82e428392ee63999c8abfd (diff)
saveMatrix
Diffstat (limited to 'lib/Data/Packed/Internal')
-rw-r--r--lib/Data/Packed/Internal/Matrix.hs20
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/Data/Packed/Internal/Matrix.hs b/lib/Data/Packed/Internal/Matrix.hs
index 01d2ccf..68547bd 100644
--- a/lib/Data/Packed/Internal/Matrix.hs
+++ b/lib/Data/Packed/Internal/Matrix.hs
@@ -23,6 +23,7 @@ import Data.Packed.Internal.Vector
23import Foreign hiding (xor) 23import Foreign hiding (xor)
24import Complex 24import Complex
25import Foreign.C.Types 25import Foreign.C.Types
26import Foreign.C.String
26 27
27----------------------------------------------------------------- 28-----------------------------------------------------------------
28 29
@@ -350,6 +351,19 @@ fromComplex :: Vector (Complex Double) -> (Vector Double, Vector Double)
350fromComplex z = (r,i) where 351fromComplex z = (r,i) where
351 [r,i] = toColumns $ reshape 2 $ asReal z 352 [r,i] = toColumns $ reshape 2 $ asReal z
352 353
353-- | loads a matrix from an ASCII file (the number of rows and columns must be known in advance). 354--------------------------------------------------------------------------
354fromFile :: FilePath -> (Int,Int) -> IO (Matrix Double) 355
355fromFile filename (r,c) = reshape c `fmap` fscanfVector filename (r*c) 356-- | Saves a matrix as 2D ASCII table.
357saveMatrix :: FilePath
358 -> String -- ^ format (%f, %g, %e)
359 -> Matrix Double
360 -> IO ()
361saveMatrix filename fmt m = do
362 charname <- newCString filename
363 charfmt <- newCString fmt
364 let o = if orderOf m == RowMajor then 1 else 0
365 app1 (matrix_fprintf charname charfmt o) mat m "matrix_fprintf"
366 free charname
367 free charfmt
368
369foreign import ccall "matrix_fprintf" matrix_fprintf :: Ptr CChar -> Ptr CChar -> CInt -> TM