| Copyright | (c) Erich Gut |
|---|---|
| License | BSD3 |
| Maintainer | zerich.gut@gmail.com |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
OAlg.AbelianGroup.Free.SmithNormalForm
Description
diagonal and Smith Normal Form for Z-matrices.
Synopsis
- zmxDiagonalForm :: Matrix Z -> DiagonalForm Z
- smithNormalForm :: Matrix Z -> SmithNormalForm Z
- smithNormalForm' :: DiagonalFormStrictPositive Z -> SmithNormalForm Z
- zmxDiagonalFormStrictPositive :: Matrix Z -> DiagonalFormStrictPositive Z
- data SmithNormalForm k = SmithNormalForm N [k] (RowTrafo k) (ColTrafo k)
- snfDiagonalForm :: Semiring k => SmithNormalForm k -> DiagonalForm k
- prpDiagonalFormZ :: N -> Q -> Statement
Diagonal Form
zmxDiagonalForm :: Matrix Z -> DiagonalForm Z Source #
Smith Normal Form
smithNormalForm :: Matrix Z -> SmithNormalForm Z Source #
smithNormalForm' :: DiagonalFormStrictPositive Z -> SmithNormalForm Z Source #
Smith Normal Form of a diagonal matrix over Z with strict positive entries.
Property Let d = be in
DiagonalFormStrictPositive d' (DiagonalForm ds a b), DiagonalFormStrictPositive Zm = and
dgfMatrix d's = , then holds: smithNormalForm' dm .== dgfMatrix (snfDiagonalForm s)
zmxDiagonalFormStrictPositive :: Matrix Z -> DiagonalFormStrictPositive Z Source #
transforming a matrix over Z to a diagonal matrix with strict positive entries
by applying elements of .GLT Z
Property Let m be in and
Matrix Z, then holds:
DiagonalFormStrictPositive d = zmxDiagonalFormStrictPositive m(a where *> m) <* b ==
diagonal (rows m) (cols m) ds.DiagonalForm ds a b = d
Note The entries of the diagonal may not be successively divisible, as such it is a pre-form of the Smith Normal Form.
data SmithNormalForm k Source #
the smith normal form.
Properties Let s = be in SmithNormalForm o ds a b,
then holds: SmithNormalForm Z
issnfDiagonalFormsvalid.- For all
kinksholds:0 < k. - For all
..kin:k'..ksholds:.modk' k==0
Constructors
| SmithNormalForm N [k] (RowTrafo k) (ColTrafo k) |
Instances
| Oriented k => Show (SmithNormalForm k) Source # | |
Defined in OAlg.AbelianGroup.Free.SmithNormalForm Methods showsPrec :: Int -> SmithNormalForm k -> ShowS # show :: SmithNormalForm k -> String # showList :: [SmithNormalForm k] -> ShowS # | |
| Oriented k => Eq (SmithNormalForm k) Source # | |
Defined in OAlg.AbelianGroup.Free.SmithNormalForm Methods (==) :: SmithNormalForm k -> SmithNormalForm k -> Bool # (/=) :: SmithNormalForm k -> SmithNormalForm k -> Bool # | |
| Validable (SmithNormalForm Z) Source # | |
Defined in OAlg.AbelianGroup.Free.SmithNormalForm Methods valid :: SmithNormalForm Z -> Statement # | |
| Entity (SmithNormalForm Z) Source # | |
Defined in OAlg.AbelianGroup.Free.SmithNormalForm | |
snfDiagonalForm :: Semiring k => SmithNormalForm k -> DiagonalForm k Source #
the underlying diagonal form.