-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | native matrix based on vector -- @package matrices @version 0.3.2 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) instance [overlap ok] (Storable a, Binary a) => Binary (Matrix Vector a) instance [overlap ok] (Unbox a, Binary a) => Binary (Matrix Vector a) instance [overlap ok] Binary a => Binary (Matrix Vector a) module Data.Matrix.Generic.Mutable fromMVector :: MVector v a => (Int, Int) -> v m a -> MMatrix v m a dim :: MMatrix v m a -> (Int, Int) flatten :: (MVector v a, PrimMonad m) => MMatrix v (PrimState m) a -> m (v (PrimState m) a) takeRow :: MVector v a => MMatrix v m a -> Int -> v m a thaw :: (Vector v a, PrimMonad m) => Matrix v a -> m (MMatrix (Mutable v) (PrimState m) a) unsafeThaw :: (Vector v a, 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 -- | O(1) Return the number of rows rows :: Vector v a => Matrix v a -> Int -- | O(1) Return the number of columns cols :: Vector v a => Matrix v a -> Int -- | O(1) Return the size of matrix dim :: Vector v a => Matrix v a -> (Int, Int) -- | O(1) Indexing (!) :: Vector v a => Matrix v a -> (Int, Int) -> a -- | O(1) Unsafe indexing without bound check unsafeIndex :: Vector v a => Matrix v a -> (Int, Int) -> a -- | O(1) Return an empty matrix empty :: Vector v a => Matrix v a -- | O(m*n) Matrix construction matrix :: Vector v a => Int -> [a] -> Matrix v a -- | Create a vector by concatenating rows flatten :: Vector v a => Matrix v a -> v a -- | O(1) Create matrix from vector fromVector :: Vector v a => (Int, Int) -> v a -> Matrix v a -- | O(m) Return the rows toRows :: Vector v a => Matrix v a -> [v a] -- | O(m*n) Return the columns toColumns :: Vector v a => Matrix v a -> [v a] -- | O(m*n) Create matrix from rows fromRows :: Vector v a => [v a] -> Matrix v a -- | O(m*n) Create matrix from columns fromColumns :: Vector v a => [v a] -> Matrix v a -- | O(m*n) Create a list by concatenating rows toList :: Vector v a => Matrix v a -> [a] -- | O(m*n) List of lists toLists :: Vector v a => Matrix v a -> [[a]] -- | O(m*n) Create matrix from list of lists, it doesn't check if the list -- of list is a valid matrix fromLists :: Vector v a => [[a]] -> Matrix v a -- | O(m*n) Convert different matrix type convert :: (Vector v a, Vector w a) => Matrix v a -> Matrix w a -- | O(m*n) Matrix transpose tr :: Vector v a => Matrix v a -> Matrix v a -- | O(1) Extract a row takeRow :: Vector v a => Matrix v a -> Int -> v a -- | O(m) Extract a column 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 -- | O(m*n) Create an identity matrix ident :: (Num a, Vector v a) => Int -> Matrix v a -- | O(m*n) 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 -- | O(m*n) 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 () generate :: Vector v a => (Int, Int) -> ((Int, Int) -> a) -> Matrix v a 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