Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.Matrix.Static.Generic
Contents
Synopsis
- type family Mutable (mat :: MatrixKind) = (mmat :: MMatrixKind) | mmat -> mat
- class (MMatrix (Mutable mat) (Mutable v) a, Vector v a) => Matrix (mat :: MatrixKind) v a where
- dim :: mat r c v a -> (Int, Int)
- unsafeIndex :: mat r c v a -> (Int, Int) -> a
- unsafeFromVector :: (SingI r, SingI c) => v a -> mat r c v a
- flatten :: mat r c v a -> v a
- unsafeTakeRow :: mat r c v a -> Int -> v a
- unsafeTakeColumn :: mat r c v a -> Int -> v a
- takeDiag :: mat r c v a -> v a
- transpose :: (SingI r, SingI c) => mat r c v a -> mat c r v a
- thaw :: PrimMonad s => mat r c v a -> s (Mutable mat r c (Mutable v) (PrimState s) a)
- unsafeThaw :: PrimMonad s => mat r c v a -> s (Mutable mat r c (Mutable v) (PrimState s) a)
- freeze :: PrimMonad s => Mutable mat r c (Mutable v) (PrimState s) a -> s (mat r c v a)
- unsafeFreeze :: PrimMonad s => Mutable mat r c (Mutable v) (PrimState s) a -> s (mat r c v a)
- map :: Vector v b => (a -> b) -> mat r c v a -> mat r c v b
- imap :: Vector v b => ((Int, Int) -> a -> b) -> mat r c v a -> mat r c v b
- imapM_ :: (Monad monad, Matrix mat v a) => ((Int, Int) -> a -> monad b) -> mat r c v a -> monad ()
- sequence :: (Vector v (monad a), Monad monad) => mat r c v (monad a) -> monad (mat r c v a)
- sequence_ :: (Vector v (monad a), Monad monad) => mat r c v (monad a) -> monad ()
- type MatrixKind = Nat -> Nat -> (Type -> Type) -> Type -> Type
- 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
- 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
- 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
- toRows :: Matrix m v a => m r c v a -> [v a]
- toColumns :: Matrix m v a => m r c v a -> [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
- withMatrix :: forall mat v a b. Matrix mat v a => [[a]] -> (forall r c. mat r c v a -> b) -> b
- fromRows :: (Matrix m v a, SingI r, SingI c) => [v a] -> m r c v a
- withRows :: forall mat v a b. Matrix mat v a => [v a] -> (forall r c. mat r c v a -> b) -> b
- fromColumns :: (Matrix m v a, SingI r, SingI c) => [v a] -> m r c v a
- withColumns :: forall mat v a b. Matrix mat v a => [v a] -> (forall r c. mat r c v a -> b) -> b
- 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
- toList :: Matrix m v a => m r c v a -> [a]
- create :: Matrix m v a => (forall s. ST s (Mutable m r c (Mutable v) s a)) -> m r c v a
- convertAny :: (Matrix m1 v1 a, Matrix m2 v2 a, SingI r, SingI c) => m1 r c v1 a -> m2 r c v2 a
- 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)
- 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)
Documentation
type family Mutable (mat :: MatrixKind) = (mmat :: MMatrixKind) | mmat -> mat Source #
Instances
type Mutable Matrix Source # | |
Defined in Data.Matrix.Static.Dense | |
type Mutable SparseMatrix Source # | |
Defined in Data.Matrix.Static.Sparse |
class (MMatrix (Mutable mat) (Mutable v) a, Vector v a) => Matrix (mat :: MatrixKind) v a where Source #
Minimal complete definition
dim, unsafeIndex, unsafeFromVector, thaw, unsafeThaw, freeze, unsafeFreeze, map, imap, imapM_, sequence, sequence_
Methods
dim :: mat r c v a -> (Int, Int) Source #
unsafeIndex :: mat r c v a -> (Int, Int) -> a Source #
unsafeFromVector :: (SingI r, SingI c) => v a -> mat r c v a Source #
flatten :: mat r c v a -> v a Source #
Convert matrix to vector in column order. Default algorithm is O((m*n) * O(unsafeIndex)).
unsafeTakeRow :: mat r c v a -> Int -> v a Source #
Extract a row. Default algorithm is O(n * O(unsafeIndex)).
unsafeTakeColumn :: mat r c v a -> Int -> v a Source #
Extract a column. Default algorithm is O(m * O(unsafeIndex)).
takeDiag :: mat r c v a -> v a Source #
Extract the diagonal. Default algorithm is O(min(m,n) * O(unsafeIndex)).
transpose :: (SingI r, SingI c) => mat r c v a -> mat c r v a Source #
thaw :: PrimMonad s => mat r c v a -> s (Mutable mat r c (Mutable v) (PrimState s) a) Source #
unsafeThaw :: PrimMonad s => mat r c v a -> s (Mutable mat r c (Mutable v) (PrimState s) a) Source #
freeze :: PrimMonad s => Mutable mat r c (Mutable v) (PrimState s) a -> s (mat r c v a) Source #
unsafeFreeze :: PrimMonad s => Mutable mat r c (Mutable v) (PrimState s) a -> s (mat r c v a) Source #
map :: Vector v b => (a -> b) -> mat r c v a -> mat r c v b Source #
imap :: Vector v b => ((Int, Int) -> a -> b) -> mat r c v a -> mat r c v b Source #
imapM_ :: (Monad monad, Matrix mat v a) => ((Int, Int) -> a -> monad b) -> mat r c v a -> monad () Source #
sequence :: (Vector v (monad a), Monad monad) => mat r c v (monad a) -> monad (mat r c v a) Source #
sequence_ :: (Vector v (monad a), Monad monad) => mat r c v (monad a) -> monad () Source #
Instances
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, Zero a) => Matrix SparseMatrix v a Source # | |
Defined in Data.Matrix.Static.Sparse Methods dim :: SparseMatrix r c v a -> (Int, Int) Source # unsafeIndex :: SparseMatrix r c v a -> (Int, Int) -> a Source # unsafeFromVector :: (SingI r, SingI c) => v a -> SparseMatrix r c v a Source # flatten :: SparseMatrix r c v a -> v a Source # unsafeTakeRow :: SparseMatrix r c v a -> Int -> v a Source # unsafeTakeColumn :: SparseMatrix r c v a -> Int -> v a Source # takeDiag :: SparseMatrix r c v a -> v a Source # transpose :: (SingI r, SingI c) => SparseMatrix r c v a -> SparseMatrix c r v a Source # thaw :: PrimMonad s => SparseMatrix r c v a -> s (Mutable SparseMatrix r c (Mutable v) (PrimState s) a) Source # unsafeThaw :: PrimMonad s => SparseMatrix r c v a -> s (Mutable SparseMatrix r c (Mutable v) (PrimState s) a) Source # freeze :: PrimMonad s => Mutable SparseMatrix r c (Mutable v) (PrimState s) a -> s (SparseMatrix r c v a) Source # unsafeFreeze :: PrimMonad s => Mutable SparseMatrix r c (Mutable v) (PrimState s) a -> s (SparseMatrix r c v a) Source # map :: Vector v b => (a -> b) -> SparseMatrix r c v a -> SparseMatrix r c v b Source # imap :: Vector v b => ((Int, Int) -> a -> b) -> SparseMatrix r c v a -> SparseMatrix r c v b Source # imapM_ :: (Monad monad, Matrix SparseMatrix v a) => ((Int, Int) -> a -> monad b) -> SparseMatrix r c v a -> monad () Source # sequence :: (Vector v (monad a), Monad monad) => SparseMatrix r c v (monad a) -> monad (SparseMatrix r c v a) Source # sequence_ :: (Vector v (monad a), Monad monad) => SparseMatrix r c v (monad a) -> monad () Source # |
Derived mothods
(!) :: 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
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.
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.
withMatrix :: forall mat v a b. Matrix mat v a => [[a]] -> (forall r c. mat r c v a -> b) -> b Source #
fromRows :: (Matrix m v a, SingI r, SingI c) => [v a] -> m r c v a Source #
O(m*n) Create matrix from rows
withRows :: forall mat v a b. Matrix mat v a => [v a] -> (forall r c. mat r c v a -> b) -> b Source #
fromColumns :: (Matrix m v a, SingI r, SingI c) => [v a] -> m r c v a Source #
O(m*n) Create matrix from columns
withColumns :: forall mat v a b. Matrix mat v a => [v a] -> (forall r c. mat r c v a -> b) -> b Source #
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.
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.