Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.Matrix.Static.Dense
Contents
Synopsis
- data Matrix :: MatrixKind where
- dim :: Matrix mat v a => mat r c v a -> (Int, Int)
- rows :: Matrix m v a => m r c v a -> Int
- cols :: Matrix m v a => m r c v a -> Int
- (!) :: forall m r c v a i j. (Matrix m v a, i <= r, j <= c) => m r c v a -> (Sing i, Sing j) -> a
- takeRow :: forall m r c v a i. (i <= r, SingI i, Matrix m v a) => m r c v a -> Sing i -> v a
- takeColumn :: forall m r c v a j. (j <= c, SingI j, Matrix m v a) => m r c v a -> Sing j -> v a
- takeDiag :: Matrix mat v a => mat r c v a -> v a
- unsafeIndex :: Matrix mat v a => mat r c v a -> (Int, Int) -> a
- unsafeTakeRow :: Matrix mat v a => mat r c v a -> Int -> v a
- unsafeTakeColumn :: Matrix mat v a => mat r c v a -> Int -> v a
- empty :: Matrix m v a => m 0 0 v a
- matrix :: (SingI r, SingI c, Matrix m v a) => [[a]] -> m r c v a
- fromVector :: forall m r c v a. (SingI r, SingI c, Matrix m v a) => v a -> m r c v a
- fromList :: (SingI r, SingI c, Matrix m v a) => [a] -> m r c v a
- fromRows :: (Matrix m v a, SingI r, SingI c) => [v a] -> m r c v a
- fromColumns :: (Matrix m v a, SingI r, SingI c) => [v a] -> m r c v a
- unsafeFromVector :: (Matrix mat v a, SingI r, SingI c) => v a -> mat r c v a
- replicate :: forall r c v a. (Vector v a, SingI r, SingI c) => a -> Matrix r c v a
- diagRect :: (Vector v a, SingI r, SingI c, n <= r, n <= c) => a -> Matrix n 1 v a -> Matrix r c v a
- flatten :: Matrix mat v a => mat r c v a -> v a
- toRows :: Matrix m v a => m r c v a -> [v a]
- toColumns :: Matrix m v a => m r c v a -> [v a]
- toList :: Matrix m v a => m r c v a -> [a]
- convert :: (Vector v a, Vector w a) => Matrix r c v a -> Matrix r c w a
- convertAny :: (Matrix m1 v1 a, Matrix m2 v2 a, SingI r, SingI c) => m1 r c v1 a -> m2 r c v2 a
- transpose :: (Matrix mat v a, SingI r, SingI c) => mat r c v a -> mat c r v a
- map :: (Matrix mat v a, Vector v b) => (a -> b) -> mat r c v a -> mat r c v b
- mapM :: (Vector v (monad b), Monad monad, Matrix mat v a, Matrix mat v b) => (a -> monad b) -> mat r c v a -> monad (mat r c v b)
- imap :: (Matrix mat v a, Vector v b) => ((Int, Int) -> a -> b) -> mat r c v a -> mat r c v b
- imapM :: (Vector v (monad b), Monad monad, Matrix mat v a, Matrix mat v b) => ((Int, Int) -> a -> monad b) -> mat r c v a -> monad (mat r c v b)
- zip :: (SingI n, SingI m, Vector v a, Vector v b, Vector v (a, b)) => Matrix n m v a -> Matrix n m v b -> Matrix n m v (a, b)
- zip3 :: (SingI n, SingI m, Vector v a, Vector v b, Vector v c, Vector v (a, b, c)) => Matrix n m v a -> Matrix n m v b -> Matrix n m v c -> Matrix n m v (a, b, c)
- zipWith :: (Vector v a, Vector v b, Vector v c, SingI n, SingI m) => (a -> b -> c) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c
- zipWith3 :: (Vector v a, Vector v b, Vector v c, Vector v d, SingI n, SingI m) => (a -> b -> c -> d) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c -> Matrix n m v d
- zipWith4 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, SingI n, SingI m) => (a -> b -> c -> d -> e) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c -> Matrix n m v d -> Matrix n m v e
- zipWith5 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, Vector v f, SingI n, SingI m) => (a -> b -> c -> d -> e -> f) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c -> Matrix n m v d -> Matrix n m v e -> Matrix n m v f
- zipWith6 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, Vector v f, Vector v g, SingI n, SingI m) => (a -> b -> c -> d -> e -> f -> g) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c -> Matrix n m v d -> Matrix n m v e -> Matrix n m v f -> Matrix n m v g
- izipWith :: (Vector v a, Vector v b, Vector v c, SingI n, SingI m) => ((Int, Int) -> a -> b -> c) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c
- izipWith3 :: (Vector v a, Vector v b, Vector v c, Vector v d, SingI n, SingI m) => ((Int, Int) -> a -> b -> c -> d) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c -> Matrix n m v d
- zipWithM :: (Vector v a, Vector v b, Vector v c, Monad monad, SingI n, SingI m) => (a -> b -> monad c) -> Matrix n m v a -> Matrix n m v b -> monad (Matrix n m v c)
- zipWithM_ :: (Vector v a, Vector v b, Vector v c, Monad monad) => (a -> b -> monad c) -> Matrix n m v a -> Matrix n m v b -> monad ()
- unzip :: (Vector v a, Vector v b, Vector v (a, b), SingI n, SingI m) => Matrix n m v (a, b) -> (Matrix n m v a, Matrix n m v b)
- unzip3 :: (Vector v a, Vector v b, Vector v c, Vector v (a, b, c), SingI n, SingI m) => Matrix n m v (a, b, c) -> (Matrix n m v a, Matrix n m v b, Matrix n m v c)
- generate :: forall r c v a. (Vector v a, SingI r, SingI c) => ((Int, Int) -> a) -> Matrix r c v a
- thaw :: (Matrix mat v a, PrimMonad s) => mat r c v a -> s (Mutable mat r c (Mutable v) (PrimState s) a)
- unsafeThaw :: (Matrix mat v a, PrimMonad s) => mat r c v a -> s (Mutable mat r c (Mutable v) (PrimState s) a)
- freeze :: (Matrix mat v a, PrimMonad s) => Mutable mat r c (Mutable v) (PrimState s) a -> s (mat r c v a)
- unsafeFreeze :: (Matrix mat v a, PrimMonad s) => Mutable mat r c (Mutable v) (PrimState s) a -> s (mat r c v a)
- create :: Matrix m v a => (forall s. ST s (Mutable m r c (Mutable v) s a)) -> m r c v a
Immutable Matrix
data Matrix :: MatrixKind where Source #
Column-major matrix
Instances
Factorization Matrix Source # | |
Defined in Data.Matrix.Static.LinearAlgebra Methods inverse :: (SingI n, Numeric a) => Matrix n n Vector a -> Matrix n n Vector a Source # eigs :: (SingI k, SingI n, (k <= (n - 2)) ~ True) => Sing k -> Matrix n n Vector Double -> (Matrix0 k 1 (Complex Double), Matrix0 n k (Complex Double)) Source # cholesky :: (Numeric a, SingI n) => Matrix n n Vector a -> Matrix n n Vector a Source # | |
Arithmetic Matrix Matrix Source # | |
Defined in Data.Matrix.Static.LinearAlgebra Methods (@@) :: (Numeric a, SingI n, SingI m, If (Matrix == Matrix) Matrix Matrix ~ mat3) => Matrix n p Vector a -> Matrix p m Vector a -> mat3 n m Vector a Source # (%+%) :: (Numeric a, SingI n, SingI m, If (Matrix == Matrix) Matrix Matrix ~ mat3) => Matrix n m Vector a -> Matrix n m Vector a -> mat3 n m Vector a Source # (%-%) :: (Numeric a, SingI n, SingI m, If (Matrix == Matrix) Matrix Matrix ~ mat3) => Matrix n m Vector a -> Matrix n m Vector a -> mat3 n m Vector a Source # (%*%) :: (Numeric a, SingI n, SingI m, If (Matrix == Matrix) Matrix SparseMatrix ~ mat3) => Matrix n m Vector a -> Matrix n m Vector a -> mat3 n m Vector a Source # | |
Arithmetic Matrix SparseMatrix Source # | |
Defined in Data.Matrix.Static.LinearAlgebra Methods (@@) :: (Numeric a, SingI n, SingI m, If (Matrix == SparseMatrix) Matrix Matrix ~ mat3) => Matrix n p Vector a -> SparseMatrix p m Vector a -> mat3 n m Vector a Source # (%+%) :: (Numeric a, SingI n, SingI m, If (Matrix == SparseMatrix) Matrix Matrix ~ mat3) => Matrix n m Vector a -> SparseMatrix n m Vector a -> mat3 n m Vector a Source # (%-%) :: (Numeric a, SingI n, SingI m, If (Matrix == SparseMatrix) Matrix Matrix ~ mat3) => Matrix n m Vector a -> SparseMatrix n m Vector a -> mat3 n m Vector a Source # (%*%) :: (Numeric a, SingI n, SingI m, If (Matrix == SparseMatrix) Matrix SparseMatrix ~ mat3) => Matrix n m Vector a -> SparseMatrix n m Vector a -> mat3 n m Vector a Source # | |
Arithmetic SparseMatrix Matrix Source # | |
Defined in Data.Matrix.Static.LinearAlgebra Methods (@@) :: (Numeric a, SingI n, SingI m, If (SparseMatrix == Matrix) SparseMatrix Matrix ~ mat3) => SparseMatrix n p Vector a -> Matrix p m Vector a -> mat3 n m Vector a Source # (%+%) :: (Numeric a, SingI n, SingI m, If (SparseMatrix == Matrix) SparseMatrix Matrix ~ mat3) => SparseMatrix n m Vector a -> Matrix n m Vector a -> mat3 n m Vector a Source # (%-%) :: (Numeric a, SingI n, SingI m, If (SparseMatrix == Matrix) SparseMatrix Matrix ~ mat3) => SparseMatrix n m Vector a -> Matrix n m Vector a -> mat3 n m Vector a Source # (%*%) :: (Numeric a, SingI n, SingI m, If (SparseMatrix == Matrix) SparseMatrix SparseMatrix ~ mat3) => SparseMatrix n m Vector a -> Matrix n m Vector a -> mat3 n m Vector a Source # | |
Vector v a => Matrix Matrix v a Source # | |
Defined in Data.Matrix.Static.Dense Methods dim :: Matrix r c v a -> (Int, Int) Source # unsafeIndex :: Matrix r c v a -> (Int, Int) -> a Source # unsafeFromVector :: (SingI r, SingI c) => v a -> Matrix r c v a Source # flatten :: Matrix r c v a -> v a Source # unsafeTakeRow :: Matrix r c v a -> Int -> v a Source # unsafeTakeColumn :: Matrix r c v a -> Int -> v a Source # takeDiag :: Matrix r c v a -> v a Source # transpose :: (SingI r, SingI c) => Matrix r c v a -> Matrix c r v a Source # thaw :: PrimMonad s => Matrix r c v a -> s (Mutable Matrix r c (Mutable v) (PrimState s) a) Source # unsafeThaw :: PrimMonad s => Matrix r c v a -> s (Mutable Matrix r c (Mutable v) (PrimState s) a) Source # freeze :: PrimMonad s => Mutable Matrix r c (Mutable v) (PrimState s) a -> s (Matrix r c v a) Source # unsafeFreeze :: PrimMonad s => Mutable Matrix r c (Mutable v) (PrimState s) a -> s (Matrix r c v a) Source # map :: Vector v b => (a -> b) -> Matrix r c v a -> Matrix r c v b Source # imap :: Vector v b => ((Int, Int) -> a -> b) -> Matrix r c v a -> Matrix r c v b Source # imapM_ :: (Monad monad, Matrix0 Matrix v a) => ((Int, Int) -> a -> monad b) -> Matrix r c v a -> monad () Source # sequence :: (Vector v (monad a), Monad monad) => Matrix r c v (monad a) -> monad (Matrix r c v a) Source # sequence_ :: (Vector v (monad a), Monad monad) => Matrix r c v (monad a) -> monad () Source # | |
(Vector v a, Eq (v a)) => Eq (Matrix r c v a) Source # | |
(SingI r, SingI c, Vector v a, Fractional a) => Fractional (Matrix r c v a) Source # | |
(SingI r, SingI c, Vector v a, Num a) => Num (Matrix r c v a) Source # | |
Defined in Data.Matrix.Static.Dense Methods (+) :: Matrix r c v a -> Matrix r c v a -> Matrix r c v a # (-) :: Matrix r c v a -> Matrix r c v a -> Matrix r c v a # (*) :: Matrix r c v a -> Matrix r c v a -> Matrix r c v a # negate :: Matrix r c v a -> Matrix r c v a # abs :: Matrix r c v a -> Matrix r c v a # signum :: Matrix r c v a -> Matrix r c v a # fromInteger :: Integer -> Matrix r c v a # | |
(Vector v a, Show a) => Show (Matrix r c v a) Source # | |
type Mutable Matrix Source # | |
Defined in Data.Matrix.Static.Dense |
Accessors
length information
Query
(!) :: forall m r c v a i j. (Matrix m v a, i <= r, j <= c) => m r c v a -> (Sing i, Sing j) -> a Source #
Indexing
takeRow :: forall m r c v a i. (i <= r, SingI i, Matrix m v a) => m r c v a -> Sing i -> v a Source #
Extract a row.
takeColumn :: forall m r c v a j. (j <= c, SingI j, Matrix m v a) => m r c v a -> Sing j -> v a Source #
Extract a row.
takeDiag :: Matrix mat v a => mat r c v a -> v a Source #
Extract the diagonal. Default algorithm is O(min(m,n) * O(unsafeIndex)).
Unsafe Query
unsafeTakeRow :: Matrix mat v a => mat r c v a -> Int -> v a Source #
Extract a row. Default algorithm is O(n * O(unsafeIndex)).
unsafeTakeColumn :: Matrix mat v a => mat r c v a -> Int -> v a Source #
Extract a column. Default algorithm is O(m * O(unsafeIndex)).
Construction
fromVector :: forall m r c v a. (SingI r, SingI c, Matrix m v a) => v a -> m r c v a Source #
Construct matrix from a vector containg columns.
fromList :: (SingI r, SingI c, Matrix m v a) => [a] -> m r c v a Source #
Construct matrix from a list containg columns.
fromRows :: (Matrix m v a, SingI r, SingI c) => [v a] -> m r c v a Source #
O(m*n) Create matrix from rows
fromColumns :: (Matrix m v a, SingI r, SingI c) => [v a] -> m r c v a Source #
O(m*n) Create matrix from columns
unsafeFromVector :: (Matrix mat v a, SingI r, SingI c) => v a -> mat r c v a Source #
replicate :: forall r c v a. (Vector v a, SingI r, SingI c) => a -> Matrix r c v a Source #
O(m*n) Create a constant matrix.
Arguments
:: (Vector v a, SingI r, SingI c, n <= r, n <= c) | |
=> a | default value |
-> Matrix n 1 v a | diagonal |
-> Matrix r c v a |
O(m*n) Create a rectangular matrix with default values and given diagonal
Conversions
flatten :: Matrix mat v a => mat r c v a -> v a Source #
Convert matrix to vector in column order. Default algorithm is O((m*n) * O(unsafeIndex)).
Conversion between Different matrix types
convert :: (Vector v a, Vector w a) => Matrix r c v a -> Matrix r c w a Source #
O(m*n) Convert different matrix type
convertAny :: (Matrix m1 v1 a, Matrix m2 v2 a, SingI r, SingI c) => m1 r c v1 a -> m2 r c v2 a Source #
O(m*n) Convert to any type of matrix.
mapM :: (Vector v (monad b), Monad monad, Matrix mat v a, Matrix mat v b) => (a -> monad b) -> mat r c v a -> monad (mat r c v b) Source #
imap :: (Matrix mat v a, Vector v b) => ((Int, Int) -> a -> b) -> mat r c v a -> mat r c v b Source #
imapM :: (Vector v (monad b), Monad monad, Matrix mat v a, Matrix mat v b) => ((Int, Int) -> a -> monad b) -> mat r c v a -> monad (mat r c v b) Source #
Zipping
zip :: (SingI n, SingI m, Vector v a, Vector v b, Vector v (a, b)) => Matrix n m v a -> Matrix n m v b -> Matrix n m v (a, b) Source #
zip3 :: (SingI n, SingI m, Vector v a, Vector v b, Vector v c, Vector v (a, b, c)) => Matrix n m v a -> Matrix n m v b -> Matrix n m v c -> Matrix n m v (a, b, c) Source #
zipWith :: (Vector v a, Vector v b, Vector v c, SingI n, SingI m) => (a -> b -> c) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c Source #
zipWith3 :: (Vector v a, Vector v b, Vector v c, Vector v d, SingI n, SingI m) => (a -> b -> c -> d) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c -> Matrix n m v d Source #
zipWith4 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, SingI n, SingI m) => (a -> b -> c -> d -> e) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c -> Matrix n m v d -> Matrix n m v e Source #
zipWith5 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, Vector v f, SingI n, SingI m) => (a -> b -> c -> d -> e -> f) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c -> Matrix n m v d -> Matrix n m v e -> Matrix n m v f Source #
zipWith6 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, Vector v f, Vector v g, SingI n, SingI m) => (a -> b -> c -> d -> e -> f -> g) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c -> Matrix n m v d -> Matrix n m v e -> Matrix n m v f -> Matrix n m v g Source #
izipWith :: (Vector v a, Vector v b, Vector v c, SingI n, SingI m) => ((Int, Int) -> a -> b -> c) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c Source #
izipWith3 :: (Vector v a, Vector v b, Vector v c, Vector v d, SingI n, SingI m) => ((Int, Int) -> a -> b -> c -> d) -> Matrix n m v a -> Matrix n m v b -> Matrix n m v c -> Matrix n m v d Source #
Monadic Zipping
zipWithM :: (Vector v a, Vector v b, Vector v c, Monad monad, SingI n, SingI m) => (a -> b -> monad c) -> Matrix n m v a -> Matrix n m v b -> monad (Matrix n m v c) Source #
zipWithM_ :: (Vector v a, Vector v b, Vector v c, Monad monad) => (a -> b -> monad c) -> Matrix n m v a -> Matrix n m v b -> monad () Source #
Unzipping
unzip :: (Vector v a, Vector v b, Vector v (a, b), SingI n, SingI m) => Matrix n m v (a, b) -> (Matrix n m v a, Matrix n m v b) Source #
unzip3 :: (Vector v a, Vector v b, Vector v c, Vector v (a, b, c), SingI n, SingI m) => Matrix n m v (a, b, c) -> (Matrix n m v a, Matrix n m v b, Matrix n m v c) Source #
generate :: forall r c v a. (Vector v a, SingI r, SingI c) => ((Int, Int) -> a) -> Matrix r c v a Source #
Mutable matrix
thaw :: (Matrix mat v a, PrimMonad s) => mat r c v a -> s (Mutable mat r c (Mutable v) (PrimState s) a) Source #
unsafeThaw :: (Matrix mat v a, PrimMonad s) => mat r c v a -> s (Mutable mat r c (Mutable v) (PrimState s) a) Source #
freeze :: (Matrix mat v a, PrimMonad s) => Mutable mat r c (Mutable v) (PrimState s) a -> s (mat r c v a) Source #
unsafeFreeze :: (Matrix mat v a, PrimMonad s) => Mutable mat r c (Mutable v) (PrimState s) a -> s (mat r c v a) Source #