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.hs32
1 files changed, 0 insertions, 32 deletions
diff --git a/lib/Data/Packed/Internal/Matrix.hs b/lib/Data/Packed/Internal/Matrix.hs
index 51fb6f8..477b453 100644
--- a/lib/Data/Packed/Internal/Matrix.hs
+++ b/lib/Data/Packed/Internal/Matrix.hs
@@ -208,19 +208,16 @@ compat m1 m2 = rows m1 == rows m2 && cols m1 == cols m2
208 208
209-- | Optimized matrix computations are provided for elements in the Element class. 209-- | Optimized matrix computations are provided for elements in the Element class.
210class (Storable a, Floating a) => Element a where 210class (Storable a, Floating a) => Element a where
211 constantD :: a -> Int -> Vector a
212 transdata :: Int -> Vector a -> Int -> Vector a 211 transdata :: Int -> Vector a -> Int -> Vector a
213 subMatrixD :: (Int,Int) -- ^ (r0,c0) starting position 212 subMatrixD :: (Int,Int) -- ^ (r0,c0) starting position
214 -> (Int,Int) -- ^ (rt,ct) dimensions of submatrix 213 -> (Int,Int) -- ^ (rt,ct) dimensions of submatrix
215 -> Matrix a -> Matrix a 214 -> Matrix a -> Matrix a
216 215
217instance Element Double where 216instance Element Double where
218 constantD = constantR
219 transdata = transdataR 217 transdata = transdataR
220 subMatrixD = subMatrixR 218 subMatrixD = subMatrixR
221 219
222instance Element (Complex Double) where 220instance Element (Complex Double) where
223 constantD = constantC
224 transdata = transdataC 221 transdata = transdataC
225 subMatrixD = subMatrixC 222 subMatrixD = subMatrixC
226 223
@@ -284,31 +281,6 @@ subMatrix :: Element a
284 -> Matrix a -- ^ result 281 -> Matrix a -- ^ result
285subMatrix = subMatrixD 282subMatrix = subMatrixD
286 283
287------------------------------------------------------------------------
288
289constantAux fun x n = unsafePerformIO $ do
290 v <- createVector n
291 px <- newArray [x]
292 app1 (fun px) vec v "constantAux"
293 free px
294 return v
295
296constantR :: Double -> Int -> Vector Double
297constantR = constantAux cconstantR
298foreign import ccall "auxi.h constantR" cconstantR :: Ptr Double -> TV
299
300constantC :: Complex Double -> Int -> Vector (Complex Double)
301constantC = constantAux cconstantC
302foreign import ccall "auxi.h constantC" cconstantC :: Ptr (Complex Double) -> TCV
303
304{- | creates a vector with a given number of equal components:
305
306@> constant 2 7
3077 |> [2.0,2.0,2.0,2.0,2.0,2.0,2.0]@
308-}
309constant :: Element a => a -> Int -> Vector a
310constant = constantD
311
312-------------------------------------------------------------------------- 284--------------------------------------------------------------------------
313 285
314-- | obtains the complex conjugate of a complex vector 286-- | obtains the complex conjugate of a complex vector
@@ -329,10 +301,6 @@ fromComplex :: Vector (Complex Double) -> (Vector Double, Vector Double)
329fromComplex z = (r,i) where 301fromComplex z = (r,i) where
330 [r,i] = toColumns $ reshape 2 $ asReal z 302 [r,i] = toColumns $ reshape 2 $ asReal z
331 303
332-- | converts a real vector into a complex representation (with zero imaginary parts)
333comp :: Vector Double -> Vector (Complex Double)
334comp v = toComplex (v,constant 0 (dim v))
335
336-- | loads a matrix efficiently from formatted ASCII text file (the number of rows and columns must be known in advance). 304-- | loads a matrix efficiently from formatted ASCII text file (the number of rows and columns must be known in advance).
337fromFile :: FilePath -> (Int,Int) -> IO (Matrix Double) 305fromFile :: FilePath -> (Int,Int) -> IO (Matrix Double)
338fromFile filename (r,c) = do 306fromFile filename (r,c) = do