|
|
|
|
|
Description |
Naive implementation of simple matrix library.
|
|
Synopsis |
|
data Matrix i b | | matrixInvariant :: (Num i, Ix i) => Matrix i b -> Bool | | data Size i = Size {} | | sizeInvariant :: (Ord i, Num i) => Size i -> Bool | | data MIx i = MIx {} | | mIxInvariant :: (Ord i, Num i) => MIx i -> Bool | | fromLists :: (Num i, Ix i) => Size i -> [[b]] -> Matrix i b | | fromIndexList :: (Num i, Ix i) => Size i -> [(MIx i, b)] -> Matrix i b | | toLists :: (Ix i, Num i, Enum i) => Matrix i b -> [[b]] | | zipWith :: (a -> b -> c) -> Matrix Integer a -> Matrix Integer b -> Matrix Integer c | | matrix :: (Arbitrary i, Integral i, Ix i, Arbitrary b) => Size i -> Gen (Matrix i b) | | matrixUsingRowGen :: (Arbitrary i, Integral i, Ix i, Arbitrary b) => Size i -> (i -> Gen [b]) -> Gen (Matrix i b) | | size :: Ix i => Matrix i b -> Size i | | square :: Ix i => Matrix i b -> Bool | | isEmpty :: (Num i, Ix i) => Matrix i b -> Bool | | add :: (Ix i, Num i) => (a -> b -> c) -> Matrix i a -> Matrix i b -> Matrix i c | | mul :: (Enum i, Num i, Ix i) => Semiring a -> Matrix i a -> Matrix i a -> Matrix i a | | diagonal :: (Enum i, Num i, Ix i) => Matrix i b -> Array i b | | addRow :: (Ix i, Integral i) => b -> Matrix i b -> Matrix i b | | addColumn :: (Ix i, Num i, Enum i) => b -> Matrix i b -> Matrix i b | | tests :: IO Bool |
|
|
|
Basic data types
|
|
|
Type of matrices, parameterised on the type of values.
| Instances | (Eq b, Ix i) => Eq (Matrix i b) | (Ord b, Ix i) => Ord (Matrix i b) | (Ix i, Num i, Enum i, Show i, Show b) => Show (Matrix i b) | (Arbitrary i, Num i, Integral i, Ix i, Arbitrary b) => Arbitrary (Matrix i b) | (Ix i, Num i, Enum i, CoArbitrary b) => CoArbitrary (Matrix i b) |
|
|
|
|
|
|
Size of a matrix.
| Constructors | | Instances | |
|
|
|
|
|
Type of matrix indices (row, column).
| Constructors | | Instances | |
|
|
|
No nonpositive indices are allowed.
|
|
Generating and creating matrices
|
|
|
fromLists sz rs constructs a matrix from a list of lists of
values (a list of rows).
Precondition: length rs == rows sz && all ((== cols sz) . length) rs.
|
|
|
Constructs a matrix from a list of (index, value)-pairs.
|
|
|
Converts a matrix to a list of row lists.
|
|
|
|
|
Generates a matrix of the given size.
|
|
|
:: (Arbitrary i, Integral i, Ix i, Arbitrary b) | | => Size i | | -> i -> Gen [b] | The generator is parameterised on the size of the row.
| -> Gen (Matrix i b) | | Generates a matrix of the given size, using the given generator
to generate the rows.
|
|
|
Combining and querying matrices
|
|
|
The size of a matrix.
|
|
|
True iff the matrix is square.
|
|
|
Returns True iff the matrix is empty.
|
|
|
add (+) m1 m2 adds m1 and m2. Uses (+) to add values.
Precondition: size m1 == size m2.
|
|
|
mul semiring m1 m2 multiplies m1 and m2. Uses the
operations of the semiring semiring to perform the
multiplication.
Precondition: cols (size m1) == rows (size m2).
|
|
|
diagonal m extracts the diagonal of m.
Precondition: square m.
|
|
Modifying matrices
|
|
|
addRow x m adds a new row to m, after the rows already
existing in the matrix. All elements in the new row get set to x.
|
|
|
addColumn x m adds a new column to m, after the columns
already existing in the matrix. All elements in the new column get
set to x.
|
|
Tests
|
|
|
|
Produced by Haddock version 2.4.2 |