class MatrixElem a { } #

Methods

matrixFromList :: Int -> Int -> [a] -> IO (Matrix a)
matrixGet :: (Matrix a) -> Int -> Int -> IO a
matrixZeros :: Int -> Int -> IO (Matrix a)
matrixIdentity :: Int -> IO (Matrix a)
matrixMatmul :: (Matrix a) -> (Matrix a) -> IO (Matrix a)
matrixTranspose :: (Matrix a) -> IO (Matrix a)
matrixAdd :: (Matrix a) -> (Matrix a) -> IO (Matrix a)
matrixScale :: a -> (Matrix a) -> IO (Matrix a)
matrixTrace :: (Matrix a) -> IO a
matrixNorm :: (Matrix a) -> IO a
zeros :: (MatrixElem a) => Int -> Int -> Matrix a { } #
O(r*c). Create a matrix of zeros.
ones :: (Num a, MatrixElem a) => Int -> Int -> Matrix a { } #
O(r*c). Create a matrix of ones.
full :: (MatrixElem a) => Int -> Int -> a -> Matrix a { } #
O(r*c). Create a matrix filled with a constant value.
fromLists :: (MatrixElem a) => [[a]] -> Matrix a { } #
O(r*c). Create a matrix from nested lists (row-major order).
fromList :: (MatrixElem a) => Int -> Int -> [a] -> Matrix a { } #
O(r*c). Create a matrix from a flat list with specified dimensions.
fromRows :: (V.VectorElem a, MatrixElem a) { } #
O(r*c). Create a matrix from a list of row vectors.
fromCols :: (V.VectorElem a, MatrixElem a) { } #
O(r*c). Create a matrix from a list of column vectors.
identity :: (MatrixElem a) => Int -> Matrix a { } #
O(n²). Create an n×n identity matrix.
eye :: (MatrixElem a) => Int -> Matrix a { } #
O(n²). Identity matrix (alias for identity).
diag :: (Num a, MatrixElem a) => [a] -> Matrix a { } #
O(n²). Create a diagonal matrix from a list of elements.
diagFrom :: (Num a, V.VectorElem a, MatrixElem a) { } #
rows :: (Matrix a) -> Int { } #
O(1). The number of rows in a matrix.
cols :: (Matrix a) -> Int { } #
O(1). The number of columns in a matrix.
size :: (Matrix a) -> Int { } #
O(1). The total number of elements in a matrix.
shape :: (Matrix a) -> (Int, Int) { } #
O(1). The shape of a matrix as a (rows, cols) tuple.
m :: { } #
!? :: (MatrixElem a) => (Matrix a) -> (Int, Int) -> Maybe a { } #
O(1). Safe indexing into a matrix.
row :: (MatrixElem a, V.VectorElem a) { } #
col :: (MatrixElem a, V.VectorElem a) { } #
getRow :: (MatrixElem a, V.VectorElem a) { } #
getCol :: (MatrixElem a, V.VectorElem a) { } #
O(r). Get a column (alias for col).
getDiag :: (MatrixElem a, V.VectorElem a) { } #
O(min(r,c)). Get the main diagonal as a vector.
submatrix :: (MatrixElem a) => Int -> Int -> Int -> Int -> (Matrix a) -> Matrix a { } #
takeRows :: (MatrixElem a) => Int -> (Matrix a) -> Matrix a { } #
dropRows :: (MatrixElem a) => Int -> (Matrix a) -> Matrix a { } #
Drop first n rows.
takeCols :: (MatrixElem a) => Int -> (Matrix a) -> Matrix a { } #
Take first n columns.
dropCols :: (MatrixElem a) => Int -> (Matrix a) -> Matrix a { } #
Drop first n columns.
||| :: (MatrixElem a) => (Matrix a) -> (Matrix a) -> Matrix a { } #
Horizontal concatenation.
r1 :: { } #
r2 :: { } #
c :: { } #
hcat :: (MatrixElem a) => [Matrix a] -> Matrix a hcat { } #
vcat :: (MatrixElem a) => [Matrix a] -> Matrix a vcat { } #
fromBlocks :: (MatrixElem a) => [[Matrix a]] -> Matrix a fromBlocks blocks { } #
map :: (MatrixElem a, MatrixElem b) => (a -> b) -> (Matrix a) -> Matrix b map f m { } #
imap :: (MatrixElem a, MatrixElem b) => (Int -> Int -> a -> b) -> (Matrix a) -> Matrix b imap f m { } #
zipWith :: (MatrixElem a, MatrixElem b, MatrixElem c) => (a -> b -> c) -> (Matrix a) -> (Matrix b) -> Matrix c zipWith f ma mb { } #
r :: { } #
c :: { } #
izipWith :: (MatrixElem a, MatrixElem b, MatrixElem c) => (Int -> Int -> a -> b -> c) -> (Matrix a) -> (Matrix b) -> Matrix c izipWith f ma mb { } #
r :: { } #
c :: { } #
transpose :: (MatrixElem a) => (Matrix a) -> Matrix a transpose m { } #
scale :: (MatrixElem a) => a -> (Matrix a) -> Matrix a scale k m { } #
Scale matrix by scalar.
mul :: (MatrixElem a) => (Matrix a) -> (Matrix a) -> Matrix a mul a b { } #
mulV :: (Num a, MatrixElem a, V.VectorElem a) { } #
O(n·m). Matrix-vector multiplication.
trace :: (MatrixElem a) => (Matrix a) -> a trace m { } #
det :: (Fractional a, Ord a, MatrixElem a) => (Matrix a) -> a det m { } #
cols :: (Matrix a) -> Int { } #
O(1). The number of columns in a matrix.
== :: { } #
sign :: { } #
n :: { } #
rank :: (Floating a, Ord a, MatrixElem a, V.VectorElem a) { } #
O(n³). Matrix rank via SVD.
inv :: (Fractional a, Ord a, MatrixElem a) => (Matrix a) -> Matrix a inv m { } #
O(n³). Matrix inverse using Gauss-Jordan elimination.
cols :: (Matrix a) -> Int { } #
O(1). The number of columns in a matrix.
otherwise :: { } #
gaussJordanInverse :: (Fractional a, Ord a, MatrixElem a) => (Matrix a) -> Matrix a gaussJordanInverse m { } #
Gauss-Jordan elimination for matrix inverse.
n :: { } #
augmented :: { } #
reduced :: { } #
gaussElim :: (Fractional a, Ord a, MatrixElem a) => Int -> Int -> (Matrix a) -> Matrix a gaussElim nRows nCols m { } #
mat2 :: { } #
mat3 :: { } #
pinv :: (Floating a, Ord a, MatrixElem a, V.VectorElem a) { } #
a :: { } #
solve :: (Fractional a, Ord a, MatrixElem a, V.VectorElem a) { } #
Solve linear system Ax = b.
y :: { } #
forwardSubst :: (Fractional a, MatrixElem a, V.VectorElem a) { } #
result :: { } #
backSubst :: (Fractional a, MatrixElem a, V.VectorElem a) { } #
Back substitution for Ux = b (U is upper triangular).
lstsq :: (Floating a, Ord a, MatrixElem a, V.VectorElem a) { } #
a :: { } #
lu :: (Fractional a, Ord a, MatrixElem a) => (Matrix a) -> (Matrix a, Matrix a, Matrix a) lu m { } #
LU decomposition.
luWithPivot :: (Fractional a, Ord a, MatrixElem a) => (Matrix a) -> (Matrix a, Matrix a, Matrix a, Int) luWithPivot m { } #
cols :: (Matrix a) -> Int { } #
O(1). The number of columns in a matrix.
mat'' :: { } #
l' :: { } #
qr :: (Floating a, Ord a, MatrixElem a) => (Matrix a) -> (Matrix a, Matrix a) qr m { } #
nRows :: { } #
nCols :: { } #
k :: { } #
normV :: { } #
qj :: { } #
rjj :: { } #
subtractProjections :: { } #
q :: { } #
r :: { } #
svd :: (Floating a, Ord a, MatrixElem a, V.VectorElem a) { } #
Singular value decomposition.
powerIterationMultiple :: (Floating a, Ord a, MatrixElem a, V.VectorElem a) { } #
Power iteration for multiple eigenvectors.
cholesky :: (Floating a, Ord a, MatrixElem a) => (Matrix a) -> Matrix a cholesky m { } #
Cholesky decomposition.
cols :: (Matrix a) -> Int { } #
O(1). The number of columns in a matrix.
lMatrix :: { } #
lij :: { } #
eig :: (Floating a, Ord a, MatrixElem a, V.VectorElem a) { } #
eigvals :: (Floating a, Ord a, MatrixElem a, V.VectorElem a) { } #
Eigenvalues only.
a :: { } #
backSubstRect :: (Fractional a, MatrixElem a, V.VectorElem a) { } #
Back substitution for rectangular upper triangular system.
norm1 :: (Num a, Ord a, MatrixElem a, V.VectorElem a) { } #
a :: { } #
norm2 :: (MatrixElem a) => (Matrix a) -> a norm2 m { } #
2-norm (spectral norm, largest singular value).
normInf :: (Num a, Ord a, MatrixElem a, V.VectorElem a) { } #
a :: { } #
normFrob :: (Floating a, MatrixElem a) => (Matrix a) -> a normFrob m { } #
Frobenius norm (sqrt of sum of squares).
sum :: (Num a, MatrixElem a) => (Matrix a) -> a sum m { } #
product :: (Num a, MatrixElem a) => (Matrix a) -> a product m { } #
maximum :: (Ord a, MatrixElem a) => (Matrix a) -> a maximum m { } #
minimum :: (Ord a, MatrixElem a) => (Matrix a) -> a minimum m { } #
sumRows :: (Num a, MatrixElem a, V.VectorElem a) { } #
a :: { } #
sumCols :: (Num a, MatrixElem a, V.VectorElem a) { } #
Sum each column.
a :: { } #
meanRows :: (Fractional a, MatrixElem a, V.VectorElem a) { } #
Mean of each row.
a :: { } #
meanCols :: (Fractional a, MatrixElem a, V.VectorElem a) { } #
Mean of each column.
a :: { } #
toLists :: (MatrixElem a) => (Matrix a) -> [[a]] toLists m { } #
Convert to nested lists.
toList :: (MatrixElem a) => (Matrix a) -> [a] toList { } #
flatten :: (MatrixElem a, V.VectorElem a) { } #
a :: { } #
asColumn :: (V.VectorElem a, MatrixElem a) { } #
View vector as 1-column matrix.
a :: { } #
asVector :: (V.VectorElem a, MatrixElem a) { } #
View vector as 1-row matrix.
a :: { } #
instance MatrixElem Double { }