Operations on matrices (doublynested parallel vectors). All operations in this module assume rectangular matrices.
 type Matrix a = Vector (Vector (Data a))
 freezeMatrix :: Storable a => Matrix a > Data [[a]]
 unfreezeMatrix :: Storable a => Data Length > Data Length > Data [[a]] > Matrix a
 matrix :: Storable a => [[a]] > Matrix a
 indexedMat :: Data Int > Data Int > (Data Int > Data Int > Data a) > Matrix a
 transpose :: Matrix a > Matrix a
 flatten :: Matrix a > Vector (Data a)
 diagonal :: Matrix a > Vector (Data a)
 distributeL :: (a > b > c) > a > Vector b > Vector c
 distributeR :: (a > b > c) > Vector a > b > Vector c
 class Mul a b where
 mulMat :: Numeric a => Matrix a > Matrix a > Matrix a
 mul :: Numeric a => Matrix a > Matrix a > Matrix a
 class ElemWise a where
 (.+) :: (ElemWise a, Num (Elem a)) => a > a > a
 (.) :: (ElemWise a, Num (Elem a)) => a > a > a
 (.*) :: (ElemWise a, Num (Elem a)) => a > a > a
Documentation
freezeMatrix :: Storable a => Matrix a > Data [[a]]Source
Converts a matrix to a core array.
unfreezeMatrix :: Storable a => Data Length > Data Length > Data [[a]] > Matrix aSource
Converts a core array to a matrix. The first length argument is the number of rows (outer vector), and the second argument is the number of columns (inner argument).
matrix :: Storable a => [[a]] > Matrix aSource
Constructs a matrix. The elements are stored in a core array.
indexedMat :: Data Int > Data Int > (Data Int > Data Int > Data a) > Matrix aSource
Constructing a matrix from an index function.
indexedMat m n ixf
:

m
is the number of rows. 
n
is the number of columns. 
ifx
is a function mapping indexes to elements (first argument is row index; second argument is column index).
diagonal :: Matrix a > Vector (Data a)Source
The diagonal vector of a square matrix. It happens to work if the number of rows is less than the number of columns, but not the other way around (this would require some overhead).
distributeL :: (a > b > c) > a > Vector b > Vector cSource
distributeR :: (a > b > c) > Vector a > b > Vector cSource
Numeric a => Mul (Data a) (Matrix a)  
Numeric a => Mul (Data a) (DVector a)  
Numeric a => Mul (Data a) (Data a)  
Numeric a => Mul (DVector a) (Matrix a)  
Numeric a => Mul (DVector a) (DVector a)  
Numeric a => Mul (DVector a) (Data a)  
Numeric a => Mul (Matrix a) (Matrix a)  
Numeric a => Mul (Matrix a) (DVector a)  
Numeric a => Mul (Matrix a) (Data a) 