-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | native matrix based on vector -- -- This library provide the APIs for creating, indexing, modifying -- matrices (2d arrays). The underling data structure is vector. It's not -- intended to be a linear algebra library. @package matrices @version 0.3.0 module Data.Matrix.Generic.Types -- | row-major matrix supporting efficient slice data Matrix v a Matrix :: !Int -> !Int -> !Int -> !Int -> !(v a) -> Matrix v a -- | mutable matrix data MMatrix v m a MMatrix :: !Int -> !Int -> !Int -> !Int -> !(v m a) -> MMatrix v m a instance [overlap ok] Vector v Bool => Show (Matrix v Bool) instance [overlap ok] (Vector v a, Show a) => Show (Matrix v a) module Data.Matrix.Generic.Mutable fromMVector :: MVector v a => (Int, Int) -> v m a -> MMatrix v m a thaw :: PrimMonad m => Matrix v a -> m (MMatrix (Mutable v) (PrimState m) a) unsafeThaw :: PrimMonad m => Matrix v a -> m (MMatrix (Mutable v) (PrimState m) a) freeze :: (PrimMonad m, Vector v a) => MMatrix (Mutable v) (PrimState m) a -> m (Matrix v a) unsafeFreeze :: (PrimMonad m, Vector v a) => MMatrix (Mutable v) (PrimState m) a -> m (Matrix v a) write :: (PrimMonad m, MVector v a) => MMatrix v (PrimState m) a -> (Int, Int) -> a -> m () unsafeWrite :: (PrimMonad m, MVector v a) => MMatrix v (PrimState m) a -> (Int, Int) -> a -> m () read :: (PrimMonad m, MVector v a) => MMatrix v (PrimState m) a -> (Int, Int) -> m a unsafeRead :: (PrimMonad m, MVector v a) => MMatrix v (PrimState m) a -> (Int, Int) -> m a replicate :: (PrimMonad m, MVector v a) => (Int, Int) -> a -> m (MMatrix v (PrimState m) a) new :: (PrimMonad m, MVector v a) => (Int, Int) -> m (MMatrix v (PrimState m) a) create :: Vector v a => (forall s. ST s (MMatrix (Mutable v) s a)) -> Matrix v a module Data.Matrix.Mutable type MMatrix a = MMatrix MVector a module Data.Matrix.Storable.Mutable type MMatrix a = MMatrix MVector a module Data.Matrix.Unboxed.Mutable type MMatrix a = MMatrix MVector a module Data.Matrix.Generic.Base rows :: Vector v a => Matrix v a -> Int cols :: Vector v a => Matrix v a -> Int dim :: Vector v a => Matrix v a -> (Int, Int) (!) :: Vector v a => Matrix v a -> (Int, Int) -> a unsafeIndex :: Vector v a => Matrix v a -> (Int, Int) -> a empty :: Vector v a => Matrix v a matrix :: Vector v a => Int -> [a] -> Matrix v a flatten :: Matrix v a -> v a fromVector :: Vector v a => (Int, Int) -> v a -> Matrix v a toRows :: Vector v a => Matrix v a -> [v a] toColumns :: Vector v a => Matrix v a -> [v a] fromRows :: Vector v a => [v a] -> Matrix v a fromColumns :: Vector v a => [v a] -> Matrix v a toList :: Vector v a => Matrix v a -> [a] toLists :: Vector v a => Matrix v a -> [[a]] -- | doesn't check if the list of list is a valid matrix fromLists :: Vector v a => [[a]] -> Matrix v a -- | convert different matrix type convert :: (Vector v a, Vector w a) => Matrix v a -> Matrix w a tr :: Vector v a => Matrix v a -> Matrix v a takeRow :: Vector v a => Matrix v a -> Int -> v a takeColumn :: Vector v a => Matrix v a -> Int -> v a -- | O(1) extract sub matrix subMatrix :: Vector v a => (Int, Int) -> (Int, Int) -> Matrix v a -> Matrix v a ident :: (Num a, Vector v a) => Int -> Matrix v a -- | create a square matrix with given diagonal, other entries default to 0 diag :: (Num a, Vector v a, Foldable t) => t a -> Matrix v a -- | create a rectangular matrix with default values and given diagonal diagRect :: (Vector v a, Foldable t) => a -> (Int, Int) -> t a -> Matrix v a -- | extracts the diagonal from a rectangular matrix takeDiag :: Vector v a => Matrix v a -> v a fromBlocks :: Vector v a => a -> [[Matrix v a]] -> Matrix v a isSymmetric :: (Eq a, Vector v a) => Matrix v a -> Bool force :: Vector v a => Matrix v a -> Matrix v a foldl :: Vector v b => (a -> b -> a) -> a -> Matrix v b -> a imap :: (Vector v a, Vector v b) => ((Int, Int) -> a -> b) -> Matrix v a -> Matrix v b map :: (Vector v a, Vector v b) => (a -> b) -> Matrix v a -> Matrix v b mapM :: (Vector v a, Vector v b, Monad m) => (a -> m b) -> Matrix v a -> m (Matrix v b) mapM_ :: (Vector v a, Monad m) => (a -> m b) -> Matrix v a -> m () forM :: (Vector v a, Vector v b, Monad m) => Matrix v a -> (a -> m b) -> m (Matrix v b) forM_ :: (Vector v a, Monad m) => Matrix v a -> (a -> m b) -> m () module Data.Matrix.Storable type Matrix a = Matrix Vector a module Data.Matrix.Unboxed type Matrix a = Matrix Vector a module Data.Matrix.Generic module Data.Matrix type Matrix a = Matrix Vector a