diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Data/Packed/Internal/Matrix.hs | 16 | ||||
-rw-r--r-- | lib/Data/Packed/Internal/Vector.hs | 3 | ||||
-rw-r--r-- | lib/Data/Packed/Matrix.hs | 17 | ||||
-rw-r--r-- | lib/Data/Packed/Vector.hs | 2 | ||||
-rw-r--r-- | lib/Graphics/Plot.hs | 2 | ||||
-rw-r--r-- | lib/Numeric/GSL.hs | 2 | ||||
-rw-r--r-- | lib/Numeric/GSL/Vector.hs | 2 | ||||
-rw-r--r-- | lib/Numeric/LinearAlgebra/Instances.hs | 23 | ||||
-rw-r--r-- | lib/Numeric/LinearAlgebra/Interface.hs | 4 | ||||
-rw-r--r-- | lib/Numeric/LinearAlgebra/Linear.hs | 2 |
10 files changed, 45 insertions, 28 deletions
diff --git a/lib/Data/Packed/Internal/Matrix.hs b/lib/Data/Packed/Internal/Matrix.hs index bf7f0ec..77906dc 100644 --- a/lib/Data/Packed/Internal/Matrix.hs +++ b/lib/Data/Packed/Internal/Matrix.hs | |||
@@ -22,10 +22,10 @@ import Data.Packed.Internal.Vector | |||
22 | import Foreign hiding (xor) | 22 | import Foreign hiding (xor) |
23 | import Complex | 23 | import Complex |
24 | import Control.Monad(when) | 24 | import Control.Monad(when) |
25 | import Data.List(transpose,intersperse) | ||
26 | import Data.Maybe(fromJust) | 25 | import Data.Maybe(fromJust) |
27 | import Foreign.C.String | 26 | import Foreign.C.String |
28 | import Foreign.C.Types | 27 | import Foreign.C.Types |
28 | import Data.List(transpose) | ||
29 | 29 | ||
30 | ----------------------------------------------------------------- | 30 | ----------------------------------------------------------------- |
31 | 31 | ||
@@ -199,20 +199,6 @@ instance Field (Complex Double) where | |||
199 | 199 | ||
200 | ------------------------------------------------------------------ | 200 | ------------------------------------------------------------------ |
201 | 201 | ||
202 | instance (Show a, Field a) => (Show (Matrix a)) where | ||
203 | show m = (sizes++) . dsp . map (map show) . toLists $ m | ||
204 | where sizes = "("++show (rows m)++"><"++show (cols m)++")\n" | ||
205 | |||
206 | dsp as = (++" ]") . (" ["++) . init . drop 2 . unlines . map (" , "++) . map unwords' $ transpose mtp | ||
207 | where | ||
208 | mt = transpose as | ||
209 | longs = map (maximum . map length) mt | ||
210 | mtp = zipWith (\a b -> map (pad a) b) longs mt | ||
211 | pad n str = replicate (n - length str) ' ' ++ str | ||
212 | unwords' = concat . intersperse ", " | ||
213 | |||
214 | ------------------------------------------------------------------ | ||
215 | |||
216 | (>|<) :: (Field a) => Int -> Int -> [a] -> Matrix a | 202 | (>|<) :: (Field a) => Int -> Int -> [a] -> Matrix a |
217 | r >|< c = f where | 203 | r >|< c = f where |
218 | f l | dim v == r*c = matrixFromVector ColumnMajor c v | 204 | f l | dim v == r*c = matrixFromVector ColumnMajor c v |
diff --git a/lib/Data/Packed/Internal/Vector.hs b/lib/Data/Packed/Internal/Vector.hs index 9557206..76bd4d1 100644 --- a/lib/Data/Packed/Internal/Vector.hs +++ b/lib/Data/Packed/Internal/Vector.hs | |||
@@ -103,9 +103,6 @@ at :: Storable a => Vector a -> Int -> a | |||
103 | at v n | n >= 0 && n < dim v = at' v n | 103 | at v n | n >= 0 && n < dim v = at' v n |
104 | | otherwise = error "vector index out of range" | 104 | | otherwise = error "vector index out of range" |
105 | 105 | ||
106 | instance (Show a, Storable a) => (Show (Vector a)) where | ||
107 | show v = (show (dim v))++" |> " ++ show (toList v) | ||
108 | |||
109 | {- | takes a number of consecutive elements from a Vector | 106 | {- | takes a number of consecutive elements from a Vector |
110 | 107 | ||
111 | @> subVector 2 3 (fromList [1..10]) | 108 | @> subVector 2 3 (fromList [1..10]) |
diff --git a/lib/Data/Packed/Matrix.hs b/lib/Data/Packed/Matrix.hs index 2b93348..260c1e0 100644 --- a/lib/Data/Packed/Matrix.hs +++ b/lib/Data/Packed/Matrix.hs | |||
@@ -9,7 +9,7 @@ | |||
9 | -- Stability : provisional | 9 | -- Stability : provisional |
10 | -- Portability : portable | 10 | -- Portability : portable |
11 | -- | 11 | -- |
12 | -- Matrices | 12 | -- A Matrix representation suitable for numerical computations using LAPACK and GSL. |
13 | -- | 13 | -- |
14 | ----------------------------------------------------------------------------- | 14 | ----------------------------------------------------------------------------- |
15 | 15 | ||
@@ -22,7 +22,7 @@ module Data.Packed.Matrix ( | |||
22 | trans, conjTrans, | 22 | trans, conjTrans, |
23 | asRow, asColumn, | 23 | asRow, asColumn, |
24 | fromRows, toRows, fromColumns, toColumns, | 24 | fromRows, toRows, fromColumns, toColumns, |
25 | fromBlocks, | 25 | fromBlocks, repmat, |
26 | flipud, fliprl, | 26 | flipud, fliprl, |
27 | subMatrix, takeRows, dropRows, takeColumns, dropColumns, | 27 | subMatrix, takeRows, dropRows, takeColumns, dropColumns, |
28 | extractRows, | 28 | extractRows, |
@@ -215,3 +215,16 @@ readMatrix = fromLists . map (map read). map words . filter (not.null) . lines | |||
215 | extractRows :: Field t => [Int] -> Matrix t -> Matrix t | 215 | extractRows :: Field t => [Int] -> Matrix t -> Matrix t |
216 | extractRows l m = fromRows $ extract (toRows $ m) l | 216 | extractRows l m = fromRows $ extract (toRows $ m) l |
217 | where extract l is = [l!!i |i<-is] | 217 | where extract l is = [l!!i |i<-is] |
218 | |||
219 | {- | creates matrix by repetition of a matrix a given number of rows and columns | ||
220 | |||
221 | @> repmat (ident 2) 2 3 :: Matrix Double | ||
222 | (4><6) | ||
223 | [ 1.0, 0.0, 1.0, 0.0, 1.0, 0.0 | ||
224 | , 0.0, 1.0, 0.0, 1.0, 0.0, 1.0 | ||
225 | , 1.0, 0.0, 1.0, 0.0, 1.0, 0.0 | ||
226 | , 0.0, 1.0, 0.0, 1.0, 0.0, 1.0 ]@ | ||
227 | |||
228 | -} | ||
229 | repmat :: (Field t) => Matrix t -> Int -> Int -> Matrix t | ||
230 | repmat m r c = fromBlocks $ partit c $ replicate (r*c) m \ No newline at end of file | ||
diff --git a/lib/Data/Packed/Vector.hs b/lib/Data/Packed/Vector.hs index c893fe7..4c331ef 100644 --- a/lib/Data/Packed/Vector.hs +++ b/lib/Data/Packed/Vector.hs | |||
@@ -8,7 +8,7 @@ | |||
8 | -- Stability : provisional | 8 | -- Stability : provisional |
9 | -- Portability : portable | 9 | -- Portability : portable |
10 | -- | 10 | -- |
11 | -- Vectors | 11 | -- A representation of 1D arrays suitable for numeric computations using external libraries. |
12 | -- | 12 | -- |
13 | ----------------------------------------------------------------------------- | 13 | ----------------------------------------------------------------------------- |
14 | 14 | ||
diff --git a/lib/Graphics/Plot.hs b/lib/Graphics/Plot.hs index 71ad0fc..c763294 100644 --- a/lib/Graphics/Plot.hs +++ b/lib/Graphics/Plot.hs | |||
@@ -8,7 +8,7 @@ | |||
8 | -- Stability : provisional | 8 | -- Stability : provisional |
9 | -- Portability : uses gnuplot and ImageMagick | 9 | -- Portability : uses gnuplot and ImageMagick |
10 | -- | 10 | -- |
11 | -- Very basic (and provisional) drawing tools. | 11 | -- Very basic (and provisional) drawing tools using gnuplot and imageMagick. |
12 | -- | 12 | -- |
13 | ----------------------------------------------------------------------------- | 13 | ----------------------------------------------------------------------------- |
14 | 14 | ||
diff --git a/lib/Numeric/GSL.hs b/lib/Numeric/GSL.hs index 4bc3940..784dfbc 100644 --- a/lib/Numeric/GSL.hs +++ b/lib/Numeric/GSL.hs | |||
@@ -8,7 +8,7 @@ Maintainer : Alberto Ruiz (aruiz at um dot es) | |||
8 | Stability : provisional | 8 | Stability : provisional |
9 | Portability : uses -fffi and -fglasgow-exts | 9 | Portability : uses -fffi and -fglasgow-exts |
10 | 10 | ||
11 | This module reexports all the available Numeric.GSL functions (except those in "LinearAlgebra"). | 11 | This module reexports all the available GSL functions (except those in "LinearAlgebra"). |
12 | 12 | ||
13 | -} | 13 | -} |
14 | 14 | ||
diff --git a/lib/Numeric/GSL/Vector.hs b/lib/Numeric/GSL/Vector.hs index 41efdc0..d94b377 100644 --- a/lib/Numeric/GSL/Vector.hs +++ b/lib/Numeric/GSL/Vector.hs | |||
@@ -9,7 +9,7 @@ | |||
9 | -- Stability : provisional | 9 | -- Stability : provisional |
10 | -- Portability : portable (uses FFI) | 10 | -- Portability : portable (uses FFI) |
11 | -- | 11 | -- |
12 | -- Vector operations | 12 | -- Low level interface to vector operations. |
13 | -- | 13 | -- |
14 | ----------------------------------------------------------------------------- | 14 | ----------------------------------------------------------------------------- |
15 | 15 | ||
diff --git a/lib/Numeric/LinearAlgebra/Instances.hs b/lib/Numeric/LinearAlgebra/Instances.hs index 388f3da..4ee576f 100644 --- a/lib/Numeric/LinearAlgebra/Instances.hs +++ b/lib/Numeric/LinearAlgebra/Instances.hs | |||
@@ -9,7 +9,7 @@ Maintainer : Alberto Ruiz (aruiz at um dot es) | |||
9 | Stability : provisional | 9 | Stability : provisional |
10 | Portability : portable | 10 | Portability : portable |
11 | 11 | ||
12 | Numeric instances for Vector and Matrix. | 12 | This module exports Show, Eq, Num, Fractional, and Floating instances for Vector and Matrix. |
13 | 13 | ||
14 | In the context of the standard numeric operators, one-component vectors and matrices automatically expand to match the dimensions of the other operand. | 14 | In the context of the standard numeric operators, one-component vectors and matrices automatically expand to match the dimensions of the other operand. |
15 | 15 | ||
@@ -24,6 +24,27 @@ import Numeric.GSL.Vector | |||
24 | import Data.Packed.Matrix | 24 | import Data.Packed.Matrix |
25 | import Data.Packed.Vector | 25 | import Data.Packed.Vector |
26 | import Complex | 26 | import Complex |
27 | import Data.List(transpose,intersperse) | ||
28 | import Foreign(Storable) | ||
29 | |||
30 | ------------------------------------------------------------------ | ||
31 | |||
32 | instance (Show a, Field a) => (Show (Matrix a)) where | ||
33 | show m = (sizes++) . dsp . map (map show) . toLists $ m | ||
34 | where sizes = "("++show (rows m)++"><"++show (cols m)++")\n" | ||
35 | |||
36 | dsp as = (++" ]") . (" ["++) . init . drop 2 . unlines . map (" , "++) . map unwords' $ transpose mtp | ||
37 | where | ||
38 | mt = transpose as | ||
39 | longs = map (maximum . map length) mt | ||
40 | mtp = zipWith (\a b -> map (pad a) b) longs mt | ||
41 | pad n str = replicate (n - length str) ' ' ++ str | ||
42 | unwords' = concat . intersperse ", " | ||
43 | |||
44 | instance (Show a, Storable a) => (Show (Vector a)) where | ||
45 | show v = (show (dim v))++" |> " ++ show (toList v) | ||
46 | |||
47 | ------------------------------------------------------------------ | ||
27 | 48 | ||
28 | adaptScalar f1 f2 f3 x y | 49 | adaptScalar f1 f2 f3 x y |
29 | | dim x == 1 = f1 (x@>0) y | 50 | | dim x == 1 = f1 (x@>0) y |
diff --git a/lib/Numeric/LinearAlgebra/Interface.hs b/lib/Numeric/LinearAlgebra/Interface.hs index 5bd207a..fd076ec 100644 --- a/lib/Numeric/LinearAlgebra/Interface.hs +++ b/lib/Numeric/LinearAlgebra/Interface.hs | |||
@@ -2,14 +2,14 @@ | |||
2 | ----------------------------------------------------------------------------- | 2 | ----------------------------------------------------------------------------- |
3 | {- | | 3 | {- | |
4 | Module : Numeric.LinearAlgebra.Interface | 4 | Module : Numeric.LinearAlgebra.Interface |
5 | Copyright : (c) Alberto Ruiz 2006 | 5 | Copyright : (c) Alberto Ruiz 2007 |
6 | License : GPL-style | 6 | License : GPL-style |
7 | 7 | ||
8 | Maintainer : Alberto Ruiz (aruiz at um dot es) | 8 | Maintainer : Alberto Ruiz (aruiz at um dot es) |
9 | Stability : provisional | 9 | Stability : provisional |
10 | Portability : portable | 10 | Portability : portable |
11 | 11 | ||
12 | Operators for frequent operations. | 12 | (Very provisional) operators for frequent operations. |
13 | 13 | ||
14 | -} | 14 | -} |
15 | ----------------------------------------------------------------------------- | 15 | ----------------------------------------------------------------------------- |
diff --git a/lib/Numeric/LinearAlgebra/Linear.hs b/lib/Numeric/LinearAlgebra/Linear.hs index a3a0183..3017936 100644 --- a/lib/Numeric/LinearAlgebra/Linear.hs +++ b/lib/Numeric/LinearAlgebra/Linear.hs | |||
@@ -25,7 +25,7 @@ import Data.Packed | |||
25 | import Numeric.GSL.Vector | 25 | import Numeric.GSL.Vector |
26 | import Complex | 26 | import Complex |
27 | 27 | ||
28 | -- | basic optimized operations | 28 | -- | A generic interface for vectors and matrices to a few element-by-element functions in Numeric.GSL.Vector. |
29 | class (Container c e) => Linear c e where | 29 | class (Container c e) => Linear c e where |
30 | scale :: e -> c e -> c e | 30 | scale :: e -> c e -> c e |
31 | addConstant :: e -> c e -> c e | 31 | addConstant :: e -> c e -> c e |