# Matrices

- [Introduction](introduction.md)

- [Creation of Matrices](creation.md)

  - [General Matrix Construction](creation.md#general-matrix-construction)

    - [`Matrix(R, m, n, Q): Rng, RngIntElt, RngIntElt, [ RngElt ] → Mtrx`](creation.md#function-matrix-rng-rngintelt-rngintelt-rngelt)

    - [`Matrix(R, m, n, Q): Rng, RngIntElt, RngIntElt, [ <RngIntElt, RngIntElt, RngElt> ] → Mtrx`](creation.md#function-matrix-rng-rngintelt-rngintelt-rngintelt-rngintelt-rngelt)

    - [`Matrix(R, m, n, Q): Rng, RngIntElt, RngIntElt, [ [ RngElt ] ] → Mtrx`](creation.md#function-matrix-rng-rngintelt-rngintelt-rngelt-2)

    - [`Example: Create`](creation.md#example-ex-79e602)

  - [Shortcuts](creation.md#shortcuts)

    - [`Matrix(m, n, Q): RngIntElt, RngIntElt, [ RngElt ] → Mtrx`](creation.md#function-matrix-rngintelt-rngintelt-rngelt)

    - [`Matrix(m, n, Q): RngIntElt, RngIntElt, [ [ RngElt ] ] → Mtrx`](creation.md#function-matrix-rngintelt-rngintelt-rngelt-2)

    - [`Matrix(Q): [ Mtrx ] → Mtrx`](creation.md#function-matrix-mtrx)

    - [`Matrix(R, n, Q): Rng, RngIntElt, [ RngElt ] → Mtrx`](creation.md#function-matrix-rng-rngintelt-rngelt)

    - [`Matrix(n, Q): RngIntElt, [ RngElt ] → Mtrx`](creation.md#function-matrix-rngintelt-rngelt)

    - [`Matrix(Q): [ [ RngElt ] ] → Mtrx`](creation.md#function-matrix-rngelt)

    - [`Matrix(R, Q): Rng, [ [ RngElt ] ] → Mtrx`](creation.md#function-matrix-rng-rngelt)

    - [`Example: Short Cuts`](creation.md#example-ex-cb789b)

  - [Construction of Structured Matrices](creation.md#construction-of-structured-matrices)

    - [`ZeroMatrix(R, m, n): Rng, RngIntElt, RngIntElt → Mtrx`](creation.md#function-zeromatrix-rng-rngintelt-rngintelt)

    - [`IdentityMatrix(R, n): Rng, RngIntElt → Mtrx`](creation.md#function-identitymatrix-rng-rngintelt)

    - [`ScalarMatrix(n, s): RngIntElt, RngElt → Mtrx`](creation.md#function-scalarmatrix-rngintelt-rngelt)

    - [`ScalarMatrix(R, n, s): Rng, RngIntElt, RngElt → Mtrx`](creation.md#function-scalarmatrix-rng-rngintelt-rngelt)

    - [`DiagonalMatrix(R, n, Q): Rng, RngIntElt, [ RngElt ] → Mtrx`](creation.md#function-diagonalmatrix-rng-rngintelt-rngelt)

    - [`DiagonalMatrix(R, Q): Rng, [ RngElt ] → Mtrx`](creation.md#function-diagonalmatrix-rng-rngelt)

    - [`DiagonalMatrix(Q): [ RngElt ] → Mtrx`](creation.md#function-diagonalmatrix-rngelt)

    - [`Matrix(A): Mtrx → Mtrx`](creation.md#function-matrix-mtrx-2)

    - [`LowerTriangularMatrix(Q): [ RngElt ] → Mtrx`](creation.md#function-lowertriangularmatrix-rngelt)

    - [`LowerTriangularMatrix(R, Q): Rng, [ RngElt ] → Mtrx`](creation.md#function-lowertriangularmatrix-rng-rngelt)

    - [`UpperTriangularMatrix(Q): [ RngElt ] → Mtrx`](creation.md#function-uppertriangularmatrix-rngelt)

    - [`UpperTriangularMatrix(R, Q): Rng, [ RngElt ] → Mtrx`](creation.md#function-uppertriangularmatrix-rng-rngelt)

    - [`SymmetricMatrix(Q): [ RngElt ] → Mtrx`](creation.md#function-symmetricmatrix-rngelt)

    - [`SymmetricMatrix(R, Q): Rng, [ RngElt ] → Mtrx`](creation.md#function-symmetricmatrix-rng-rngelt)

    - [`AntisymmetricMatrix(Q): [ RngElt ] → Mtrx`](creation.md#function-antisymmetricmatrix-rngelt)

    - [`AntisymmetricMatrix(R, Q): Rng, [ RngElt ] → Mtrx`](creation.md#function-antisymmetricmatrix-rng-rngelt)

    - [`PermutationMatrix(R, Q): Rng, [ RngIntElt ] → Mtrx`](creation.md#function-permutationmatrix-rng-rngintelt)

    - [`PermutationMatrix(R, x): Rng, GrpPermElt → Mtrx`](creation.md#function-permutationmatrix-rng-grppermelt)

    - [`Example: Shortcuts`](creation.md#example-ex-c66a52)

  - [Construction of Random Matrices](creation.md#construction-of-random-matrices)

    - [`RandomMatrix(R, m, n): Rng, RngIntElt, RngIntElt → Mtrx`](creation.md#function-randommatrix-rng-rngintelt-rngintelt)

    - [`RandomUnimodularMatrix(n, M): RngIntElt, RngIntElt → Mtrx`](creation.md#function-randomunimodularmatrix-rngintelt-rngintelt)

    - [`RandomSLnZ(n, k, l): RngIntElt, RngIntElt, RngIntElt → AlgMatElt`](creation.md#function-randomslnz-rngintelt-rngintelt-rngintelt)

    - [`RandomGLnZ(n, k, l): RngIntElt, RngIntElt, RngIntElt → AlgMatElt`](creation.md#function-randomglnz-rngintelt-rngintelt-rngintelt)

    - [`RandomSymplecticMatrix(g, m): RngIntElt, RngIntElt → Mtrx`](creation.md#function-randomsymplecticmatrix-rngintelt-rngintelt)

    - [`RandomSymmetricMatrix(R, n): Rng, RngIntElt → AlgMatElt`](creation.md#function-randomsymmetricmatrix-rng-rngintelt)

    - [`RandomSymmetricMatrix(R, n, M): RngOrd, RngIntElt, RngIntElt → AlgMatElt`](creation.md#function-randomsymmetricmatrix-rngord-rngintelt-rngintelt)

    - [`RandomPositiveDefiniteSymmetricMatrix(n, M): RngIntElt, RngIntElt → AlgMatElt`](creation.md#function-randompositivedefinitesymmetricmatrix-rngintelt-rngintelt)

  - [Creating Vectors](creation.md#creating-vectors)

    - [`Vector(n, Q): RngIntElt, [ RngElt ] → ModTupRngElt`](creation.md#function-vector-rngintelt-rngelt)

    - [`Vector(Q): [ RngElt ] → ModTupRngElt`](creation.md#function-vector-rngelt)

    - [`Vector(R, n, Q): Rng, RngIntElt, [ RngElt ] → ModTupRngElt`](creation.md#function-vector-rng-rngintelt-rngelt)

    - [`Vector(R, Q): Rng, [ RngElt ] → ModTupRngElt`](creation.md#function-vector-rng-rngelt)

- [Elementary Properties](access.md)

  - [`NumberOfRows(A): Mtrx → RngIntElt`](access.md#function-numberofrows-mtrx)

  - [`Nrows(A): Mtrx → RngIntElt`](access.md#function-nrows-mtrx)

  - [`NumberOfColumns(A): Mtrx → RngIntElt`](access.md#function-numberofcolumns-mtrx)

  - [`Ncols(A): Mtrx → RngIntElt`](access.md#function-ncols-mtrx)

  - [`NumberOfNonZeroEntries(A): Mtrx → RngIntElt`](access.md#function-numberofnonzeroentries-mtrx)

  - [`NNZEntries(A): Mtrx → RngIntElt`](access.md#function-nnzentries-mtrx)

  - [`Density(A): Mtrx → FldRe`](access.md#function-density-mtrx)

  - [`BaseRing(A): Mtrx → Rng`](access.md#function-basering-mtrx)

  - [`CoefficientRing(A): Mtrx → Rng`](access.md#function-coefficientring-mtrx)

  - [`ElementToSequence(A): Mtrx → [ RngElt ]`](access.md#function-elementtosequence-mtrx)

  - [`Eltseq(A): Mtrx → [ RngElt ]`](access.md#function-eltseq-mtrx)

  - [`RowSequence(A): Mtrx → [ [RngElt] ]`](access.md#function-rowsequence-mtrx)

- [Accessing or Modifying Entries](entries.md)

  - [Indexing](entries.md#indexing)

    - [`A[i]: Mtrx, RngIntElt → ModTupRngElt`](entries.md#indexed-indexed-a-mtrx-rngintelt-modtuprngelt)

    - [`A[i, j]: Mtrx, RngIntElt, RngIntElt → RngElt`](entries.md#indexed-indexed-a-mtrx-rngintelt-rngintelt-rngelt)

    - [`A[Q]: Mtrx, [ RngIntElt ] → RngElt`](entries.md#indexed-indexed-a-mtrx-rngintelt-rngelt)

    - [`A[i .. j]: Mtrx, RngIntElt, RngIntElt → RngElt`](entries.md#indexed-indexed-a-mtrx-rngintelt-rngintelt-rngelt-2)

    - [`A[i] := v: Mtrx, RngIntElt, Mtrx`](entries.md#literal-literal-a-i-v-mtrx-rngintelt-mtrx)

    - [`A[i, j] := x: Mtrx, RngIntElt, RngIntElt, RngElt`](entries.md#literal-literal-a-i-j-x-mtrx-rngintelt-rngintelt-rngelt)

    - [`Example: Indexing`](entries.md#example-ex-e9c35f)

  - [Extracting and Inserting Blocks](entries.md#extracting-and-inserting-blocks)

    - [`Submatrix(A, i, j, p, q): Mtrx, RngIntElt, RngIntElt, RngIntElt, RngIntElt → Mtrx`](entries.md#function-submatrix-mtrx-rngintelt-rngintelt-rngintelt-rngintelt)

    - [`ExtractBlock(A, i, j, p, q): Mtrx, RngIntElt, RngIntElt, RngIntElt, RngIntElt → Mtrx`](entries.md#function-extractblock-mtrx-rngintelt-rngintelt-rngintelt-rngintelt)

    - [`SubmatrixRange(A, i, j, r, s): Mtrx, RngIntElt, RngIntElt, RngIntElt, RngIntElt → Mtrx`](entries.md#function-submatrixrange-mtrx-rngintelt-rngintelt-rngintelt-rngintelt)

    - [`ExtractBlockRange(A, i, j, r, s): Mtrx, RngIntElt, RngIntElt, RngIntElt, RngIntElt → Mtrx`](entries.md#function-extractblockrange-mtrx-rngintelt-rngintelt-rngintelt-rngintelt)

    - [`Submatrix(A, I, J): Mtrx, [RngIntElt], [RngIntElt] → Mtrx`](entries.md#function-submatrix-mtrx-rngintelt-rngintelt)

    - [`InsertBlock(A, B, i, j): Mtrx, Mtrx, RngIntElt, RngIntElt → Mtrx`](entries.md#function-insertblock-mtrx-mtrx-rngintelt-rngintelt)

    - [`InsertBlock(~A, B, i, j): Mtrx, Mtrx, RngIntElt, RngIntElt → Mtrx`](entries.md#function-insertblock-mtrx-mtrx-rngintelt-rngintelt-ref)

    - [`RowSubmatrix(A, i, k): Mtrx, RngIntElt, RngIntElt → Mtrx`](entries.md#function-rowsubmatrix-mtrx-rngintelt-rngintelt)

    - [`RowSubmatrix(A, i): Mtrx, RngIntElt → Mtrx`](entries.md#function-rowsubmatrix-mtrx-rngintelt)

    - [`RowSubmatrixRange(A, i, j): Mtrx, RngIntElt, RngIntElt → Mtrx`](entries.md#function-rowsubmatrixrange-mtrx-rngintelt-rngintelt)

    - [`ColumnSubmatrix(A, i, k): Mtrx, RngIntElt, RngIntElt → Mtrx`](entries.md#function-columnsubmatrix-mtrx-rngintelt-rngintelt)

    - [`ColumnSubmatrix(A, i): Mtrx, RngIntElt → Mtrx`](entries.md#function-columnsubmatrix-mtrx-rngintelt)

    - [`ColumnSubmatrixRange(A, i, j): Mtrx, RngIntElt, RngIntElt → Mtrx`](entries.md#function-columnsubmatrixrange-mtrx-rngintelt-rngintelt)

    - [`Example: Submatrix`](entries.md#example-ex-0ed08c)

  - [Row and Column Operations](entries.md#row-and-column-operations)

    - [`SwapRows(A, i, j): Mtrx, RngIntElt, RngIntElt → Mtrx`](entries.md#function-swaprows-mtrx-rngintelt-rngintelt)

    - [`SwapRows(~A, i, j): Mtrx, RngIntElt, RngIntElt`](entries.md#function-swaprows-mtrx-rngintelt-rngintelt-ref)

    - [`SwapColumns(A, i, j): Mtrx, RngIntElt, RngIntElt → Mtrx`](entries.md#function-swapcolumns-mtrx-rngintelt-rngintelt)

    - [`SwapColumns(~A, i, j): Mtrx, RngIntElt, RngIntElt`](entries.md#function-swapcolumns-mtrx-rngintelt-rngintelt-ref)

    - [`ReverseRows(A): Mtrx → Mtrx`](entries.md#function-reverserows-mtrx)

    - [`ReverseRows(~A): Mtrx`](entries.md#function-reverserows-mtrx-ref)

    - [`ReverseColumns(A): Mtrx → Mtrx`](entries.md#function-reversecolumns-mtrx)

    - [`ReverseColumns(~A): Mtrx`](entries.md#function-reversecolumns-mtrx-ref)

    - [`AddRow(A, c, i, j): Mtrx, RngElt, RngIntElt, RngIntElt → Mtrx`](entries.md#function-addrow-mtrx-rngelt-rngintelt-rngintelt)

    - [`AddRow(~A, c, i, j): Mtrx, RngElt, RngIntElt, RngIntElt`](entries.md#function-addrow-mtrx-rngelt-rngintelt-rngintelt-ref)

    - [`AddColumn(A, c, i, j): Mtrx, RngElt, RngIntElt, RngIntElt → Mtrx`](entries.md#function-addcolumn-mtrx-rngelt-rngintelt-rngintelt)

    - [`AddColumn(~A, c, i, j): Mtrx, RngElt, RngIntElt, RngIntElt`](entries.md#function-addcolumn-mtrx-rngelt-rngintelt-rngintelt-ref)

    - [`MultiplyRow(A, c, i): Mtrx, RngElt, RngIntElt → Mtrx`](entries.md#function-multiplyrow-mtrx-rngelt-rngintelt)

    - [`MultiplyRow(~A, c, i): Mtrx, RngElt, RngIntElt`](entries.md#function-multiplyrow-mtrx-rngelt-rngintelt-ref)

    - [`MultiplyColumn(A, c, i): Mtrx, RngElt, RngIntElt → Mtrx`](entries.md#function-multiplycolumn-mtrx-rngelt-rngintelt)

    - [`MultiplyColumn(~A, c, i): Mtrx, RngElt, RngIntElt`](entries.md#function-multiplycolumn-mtrx-rngelt-rngintelt-ref)

    - [`RemoveRow(A, i): Mtrx, RngIntElt → Mtrx`](entries.md#function-removerow-mtrx-rngintelt)

    - [`RemoveRow(~A, i): Mtrx, RngIntElt`](entries.md#function-removerow-mtrx-rngintelt-ref)

    - [`RemoveColumn(A, j): Mtrx, RngIntElt → Mtrx`](entries.md#function-removecolumn-mtrx-rngintelt)

    - [`RemoveColumn(~A, j): Mtrx, RngIntElt`](entries.md#function-removecolumn-mtrx-rngintelt-ref)

    - [`RemoveRowColumn(A, i, j): Mtrx, RngIntElt → Mtrx`](entries.md#function-removerowcolumn-mtrx-rngintelt)

    - [`RemoveRowColumn(~A, i, j): Mtrx, RngIntElt`](entries.md#function-removerowcolumn-mtrx-rngintelt-ref)

    - [`RemoveZeroRows(A): Mtrx → Mtrx`](entries.md#function-removezerorows-mtrx)

    - [`RemoveZeroRows(~A): Mtrx`](entries.md#function-removezerorows-mtrx-ref)

    - [`Example: Row Column Ops`](entries.md#example-ex-80d37c)

- [Building Block Matrices](join.md)

  - [`BlockMatrix(m, n, blocks): RngIntElt, RngIntElt, [ Mtrx ] → Mtrx`](join.md#function-blockmatrix-rngintelt-rngintelt-mtrx)

  - [`BlockMatrix(m, n, rows): RngIntElt, RngIntElt, [ [ Mtrx ] ] → Mtrx`](join.md#function-blockmatrix-rngintelt-rngintelt-mtrx-2)

  - [`BlockMatrix(rows): [ [ Mtrx ] ] → Mtrx`](join.md#function-blockmatrix-mtrx)

  - [`HorizontalJoin(X, Y): Mtrx, Mtrx → Mtrx`](join.md#function-horizontaljoin-mtrx-mtrx)

  - [`HorizontalJoin(Q): [ Mtrx ] → Mtrx`](join.md#function-horizontaljoin-mtrx)

  - [`HorizontalJoin(T): < Mtrx > → Mtrx`](join.md#function-horizontaljoin-mtrx-2)

  - [`VerticalJoin(X, Y): Mtrx, Mtrx → Mtrx`](join.md#function-verticaljoin-mtrx-mtrx)

  - [`VerticalJoin(Q): [ Mtrx ] → Mtrx`](join.md#function-verticaljoin-mtrx)

  - [`VerticalJoin(T): < Mtrx > → Mtrx`](join.md#function-verticaljoin-mtrx-2)

  - [`DiagonalJoin(X, Y): Mtrx, Mtrx → Mtrx`](join.md#function-diagonaljoin-mtrx-mtrx)

  - [`DiagonalJoin(Q): [ Mtrx ] → Mtrx`](join.md#function-diagonaljoin-mtrx)

  - [`DiagonalJoin(T): < Mtrx > → Mtrx`](join.md#function-diagonaljoin-mtrx-2)

  - [`KroneckerProduct(A, B): Mtrx, Mtrx → Mtrx`](join.md#function-kroneckerproduct-mtrx-mtrx)

- [Changing Ring](change-ring.md)

  - [`ChangeRing(A, R): Mtrx, Rng → Mtrx`](change-ring.md#function-changering-mtrx-rng)

  - [`Matrix(R, A): Rng, Mtrx → Mtrx`](change-ring.md#function-matrix-rng-mtrx)

  - [`ChangeRing(A, R, f): Mtrx, Rng, Map → Mtrx`](change-ring.md#function-changering-mtrx-rng-map)

  - [`ChangeRing(A, f): Mtrx, Map → Mtrx`](change-ring.md#function-changering-mtrx-map)

  - [`CanChangeRing(A, R): Mtrx, Rng → BoolElt, Mtrx`](change-ring.md#function-canchangering-mtrx-rng)

- [Elementary Arithmetic](arithmetic.md)

  - [`A + B: Mtrx, Mtrx → Mtrx`](arithmetic.md#operation-op-plus-mtrx-mtrx)

  - [`A - B: Mtrx, Mtrx → Mtrx`](arithmetic.md#operation-op-minus-mtrx-mtrx)

  - [`A * B: Mtrx, Mtrx → Mtrx`](arithmetic.md#operation-op-times-mtrx-mtrx)

  - [`x * A: RngElt, Mtrx → Mtrx`](arithmetic.md#operation-op-times-rngelt-mtrx)

  - [`A * x: Mtrx, RngElt → Mtrx`](arithmetic.md#operation-op-times-mtrx-rngelt)

  - [`- A: Mtrx → Mtrx`](arithmetic.md#operation-operation-mtrx-mtrx)

  - [`A ^ -1: Mtrx, RngIntElt → Mtrx`](arithmetic.md#operation-op-pow-mtrx-rngintelt)

  - [`A ^ n: Mtrx, RngIntElt → Mtrx`](arithmetic.md#operation-op-pow-mtrx-rngintelt-2)

  - [`Transpose(A): Mtrx → Mtrx`](arithmetic.md#function-transpose-mtrx)

  - [`AddScaledMatrix(A, s, B): Mtrx, RngElt, Mtrx → Mtrx`](arithmetic.md#function-addscaledmatrix-mtrx-rngelt-mtrx)

  - [`AddScaledMatrix(~A, s, B): Mtrx, RngElt, Mtrx`](arithmetic.md#function-addscaledmatrix-mtrx-rngelt-mtrx-ref)

- [Nullspaces and Solutions of Systems](solution-equation.md)

  - [`Nullspace(A): Mtrx → ModTupRng`](solution-equation.md#function-nullspace-mtrx)

  - [`Kernel(A): Mtrx → ModTupRng, Map`](solution-equation.md#function-kernel-mtrx)

  - [`NullspaceMatrix(A): Mtrx → ModTupRng`](solution-equation.md#function-nullspacematrix-mtrx)

  - [`KernelMatrix(A): Mtrx → ModTupRng`](solution-equation.md#function-kernelmatrix-mtrx)

  - [`NullspaceOfTranspose(A): Mtrx → ModTupRng`](solution-equation.md#function-nullspaceoftranspose-mtrx)

  - [`IsConsistent(A, W): Mtrx, Mtrx → BoolElt, Mtrx, ModTupRng`](solution-equation.md#function-isconsistent-mtrx-mtrx)

  - [`IsConsistent(A, Q): Mtrx, [ ModTupRng ] → BoolElt, [ ModTupRngElt ], ModTupRng`](solution-equation.md#function-isconsistent-mtrx-modtuprng)

  - [`Solution(A, W): ModMatRngElt, ModTupRng → ModTupRngElt, ModTupRng`](solution-equation.md#function-solution-modmatrngelt-modtuprng)

  - [`Solution(A, Q): ModMatRngElt, [ ModTupRng ] → [ ModTupRngElt ], ModTupRng`](solution-equation.md#function-solution-modmatrngelt-modtuprng-2)

  - [`Example: Nullspace`](solution-equation.md#example-ex-a44c79)

  - [`Example: Solution`](solution-equation.md#example-ex-83882a)

- [Predicates](predicates.md)

  - [`IsZero(A): Mtrx → BoolElt`](predicates.md#function-iszero-mtrx)

  - [`IsOne(A): Mtrx → BoolElt`](predicates.md#function-isone-mtrx)

  - [`IsMinusOne(A): Mtrx → BoolElt`](predicates.md#function-isminusone-mtrx)

  - [`IsScalar(A): Mtrx → BoolElt`](predicates.md#function-isscalar-mtrx)

  - [`IsDiagonal(A): Mtrx → BoolElt`](predicates.md#function-isdiagonal-mtrx)

  - [`IsSymmetric(A): Mtrx → BoolElt`](predicates.md#function-issymmetric-mtrx)

  - [`IsHermitian(A,f): Mtrx, Map → BoolElt`](predicates.md#function-ishermitian-mtrx-map)

  - [`IsUpperTriangular(A): Mtrx → BoolElt`](predicates.md#function-isuppertriangular-mtrx)

  - [`IsLowerTriangular(A): Mtrx → BoolElt`](predicates.md#function-islowertriangular-mtrx)

  - [`IsUnit(A): Mtrx → BoolElt`](predicates.md#function-isunit-mtrx)

  - [`IsSingular(A): Mtrx → BoolElt`](predicates.md#function-issingular-mtrx)

  - [`IsSymplecticMatrix(A): Mtrx → BoolElt`](predicates.md#function-issymplecticmatrix-mtrx)

- [Determinant and Other Properties](properties.md)

  - [`Determinant(A: parameters): Mtrx → RngElt`](properties.md#function-determinant-mtrx)

  - [`Trace(A): Mtrx → RngElt`](properties.md#function-trace-mtrx)

  - [`TraceOfProduct(A, B): Mtrx, Mtrx → RngElt`](properties.md#function-traceofproduct-mtrx-mtrx)

  - [`Rank(A): Mtrx → RngIntElt`](properties.md#function-rank-mtrx)

  - [`Minor(M, i, j): Mtrx, RngIntElt, RngIntElt → RngElt`](properties.md#function-minor-mtrx-rngintelt-rngintelt)

  - [`Minor(M, I, J): Mtrx, [RngIntElt], [RngIntElt] → RngElt`](properties.md#function-minor-mtrx-rngintelt-rngintelt-2)

  - [`Minors(M, r): Mtrx, RngIntElt → SeqEnum`](properties.md#function-minors-mtrx-rngintelt)

  - [`Cofactor(M, i, j): Mtrx, RngIntElt, RngIntElt → RngElt`](properties.md#function-cofactor-mtrx-rngintelt-rngintelt)

  - [`Cofactors(M): Mtrx → SeqEnum`](properties.md#function-cofactors-mtrx)

  - [`Cofactors(M, r): Mtrx, RngIntElt → SeqEnum`](properties.md#function-cofactors-mtrx-rngintelt)

  - [`Pfaffian(M): Mtrx → RngElt`](properties.md#function-pfaffian-mtrx)

  - [`Pfaffian(M, I, J): Mtrx, [RngIntElt], [RngIntElt] → RngElt`](properties.md#function-pfaffian-mtrx-rngintelt-rngintelt)

  - [`Pfaffians(M, r): Mtrx, RngIntElt → SeqEnum`](properties.md#function-pfaffians-mtrx-rngintelt)

- [Minimal and Characteristic Polynomials and Eigenvalues](properties-2.md)

  - [`MinimalPolynomial(A: parameters): Mtrx → RngUPolElt`](properties-2.md#function-minimalpolynomial-mtrx)

  - [`CharacteristicPolynomial(A: parameters): Mtrx → RngUPolElt`](properties-2.md#function-characteristicpolynomial-mtrx)

  - [`MinimalAndCharacteristicPolynomials(A: parameters): Mtrx → RngUPolElt, RngUPolElt`](properties-2.md#function-minimalandcharacteristicpolynomials-mtrx)

  - [`MCPolynomials(A): Mtrx → RngUPolElt, RngUPolElt`](properties-2.md#function-mcpolynomials-mtrx)

  - [`FactoredMinimalPolynomial(A: parameters): Mtrx → [ <RngUPolElt, RngIntElt>]`](properties-2.md#function-factoredminimalpolynomial-mtrx)

  - [`FactoredCharacteristicPolynomial(A: parameters): Mtrx → [ <RngUPolElt, RngIntElt>]`](properties-2.md#function-factoredcharacteristicpolynomial-mtrx)

  - [`FactoredMinimalAndCharacteristicPolynomials(A: parameters): Mtrx → [<RngUPolElt, RngIntElt>], [<RngUPolElt, RngIntElt>]`](properties-2.md#function-factoredminimalandcharacteristicpolynomials-mtrx)

  - [`FactoredMCPolynomials(A: parameters): Mtrx → [<RngUPolElt, RngIntElt>], [<RngUPolElt, RngIntElt>]`](properties-2.md#function-factoredmcpolynomials-mtrx)

  - [`Eigenvalues(A): Mtrx → { <FldElt, RngIntElt> }`](properties-2.md#function-eigenvalues-mtrx)

  - [`Eigenspace(A, e): AlgMatElt, FldElt → ModTup`](properties-2.md#function-eigenspace-algmatelt-fldelt)

- [Canonical Forms](canonical.md)

  - [Canonical Forms over General Rings](canonical.md#canonical-forms-over-general-rings)

    - [`EchelonForm(A): Mtrx → Mtrx, AlgMatElt`](canonical.md#function-echelonform-mtrx)

    - [`Adjoint(A): Mtrx → AlgMatElt`](canonical.md#function-adjoint-mtrx)

  - [Canonical Forms over Fields](canonical.md#canonical-forms-over-fields)

    - [`PrimaryRationalForm(A): Mtrx → AlgMatElt, AlgMatElt, [ <RngUPolElt, RngIntElt ]`](canonical.md#function-primaryrationalform-mtrx)

    - [`JordanForm(A): Mtrx → Mtrx, AlgMatElt, [ <RngUPolElt, RngIntElt> ]`](canonical.md#function-jordanform-mtrx)

    - [`RationalForm(A): Mtrx → Mtrx, AlgMatElt, [ RngUPolElt ]`](canonical.md#function-rationalform-mtrx)

    - [`PrimaryInvariantFactors(A): Mtrx → [ <RngUPolElt, RngIntElt> ]`](canonical.md#function-primaryinvariantfactors-mtrx)

    - [`InvariantFactors(A): Mtrx → [ RngUPolElt ]`](canonical.md#function-invariantfactors-mtrx)

    - [`IsSimilar(A, B): AlgMatElt, AlgMatElt → BoolElt, AlgMatElt`](canonical.md#function-issimilar-algmatelt-algmatelt)

    - [`HessenbergForm(A): Mtrx → AlgMatElt`](canonical.md#function-hessenbergform-mtrx)

    - [`FrobeniusFormAlternating(A): AlgMatElt → SeqEnum`](canonical.md#function-frobeniusformalternating-algmatelt)

    - [`Example: Canonical Forms`](canonical.md#example-ex-1f87a1)

  - [Canonical Forms over Euclidean Domains](canonical.md#canonical-forms-over-euclidean-domains)

    - [`HermiteForm(A): Mtrx → Mtrx, ModMatRngElt`](canonical.md#function-mat-hermiteform)

    - [`SmithForm(A): ModMatRngElt → ModMatRngElt, ModMatRngElt, ModMatRngElt`](canonical.md#function-mat-smithform)

    - [`ElementaryDivisors(A): Mtrx → [RngElt]`](canonical.md#function-elementarydivisors-mtrx)

    - [`Saturation(A): Mtrx → Mtrx`](canonical.md#function-mat-saturation)

    - [`Example: Forms1`](canonical.md#example-ex-bd35e5)

- [Orders of Invertible Matrices](order.md)

  - [`HasFiniteOrder(A): Mtrx → BoolElt`](order.md#function-hasfiniteorder-mtrx)

  - [`Order(A): AlgMatElt → RngIntElt`](order.md#function-order-algmatelt)

  - [`FactoredOrder(A): AlgMatElt → [ <RngIntElt, RngIntElt> ]`](order.md#function-factoredorder-algmatelt)

  - [`ProjectiveOrder(A): AlgMatElt → RngIntElt, RngElt`](order.md#function-projectiveorder-algmatelt)

  - [`FactoredProjectiveOrder(A): AlgMatElt → [ <RngIntElt, RngIntElt> ], RngElt`](order.md#function-factoredprojectiveorder-algmatelt)

- [Numerical Linear Algebra](numerical-linalg.md)

  - [`RQDecomposition(M): Mtrx[RngReCom] → Mtrx, AlgMatElt`](numerical-linalg.md#function-rqdecomposition-mtrx-rngrecom)

  - [`QLDecomposition(M): Mtrx[RngReCom] → AlgMatElt, Mtrx`](numerical-linalg.md#function-qldecomposition-mtrx-rngrecom)

  - [`NumericalInverse(M): Mtrx[RngReCom] → AlgMatElt`](numerical-linalg.md#function-numericalinverse-mtrx-rngrecom)

  - [`Example: Numerlinalg Examples`](numerical-linalg.md#example-ex-5a8543)

  - [Rank, Kernel, Solution, and Pseudoinverse](numerical-linalg.md#rank-kernel-solution-and-pseudoinverse)

    - [`NumericalRank(M): Mtrx[RngReCom] → RngIntElt`](numerical-linalg.md#function-numericalrank-mtrx-rngrecom)

    - [`NumericalKernel(M): Mtrx[RngReCom] → Mtrx`](numerical-linalg.md#function-numericalkernel-mtrx-rngrecom)

    - [`NumericalImage(M): Mtrx[RngReCom] → Mtrx`](numerical-linalg.md#function-numericalimage-mtrx-rngrecom)

    - [`NumericalSolution(M,w): Mtrx[RngReCom], Mtrx[RngReCom] → Mtrx, Mtrx`](numerical-linalg.md#function-numericalsolution-mtrx-rngrecom-mtrx-rngrecom)

    - [`NumericalIsConsistent(M,w): Mtrx[RngReCom], Mtrx[RngReCom] → BoolElt, Mtrx, Mtrx`](numerical-linalg.md#function-numericalisconsistent-mtrx-rngrecom-mtrx-rngrecom)

    - [`NumericalPseudoinverse(M): Mtrx[RngReCom] → Mtrx`](numerical-linalg.md#function-numericalpseudoinverse-mtrx-rngrecom)

    - [`Example: Numerlinalg Examples2`](numerical-linalg.md#example-ex-b3a16a)

  - [Eigenvalues and the Singular Value Decomposition](numerical-linalg.md#eigenvalues-and-the-singular-value-decomposition)

    - [`NumericalHessenbergForm(M): Mtrx[RngReCom] → Mtrx, Mtrx`](numerical-linalg.md#function-numericalhessenbergform-mtrx-rngrecom)

    - [`NumericalSchurForm(M): Mtrx[RngReCom] → Mtrx, Mtrx`](numerical-linalg.md#function-numericalschurform-mtrx-rngrecom)

    - [`NumericalEigenvalues(M): Mtrx[RngReCom] → SeqEnum`](numerical-linalg.md#function-numericaleigenvalues-mtrx-rngrecom)

    - [`NumericalEigenvectors(M, e): Mtrx, FldComElt → SeqEnum`](numerical-linalg.md#function-numericaleigenvectors-mtrx-fldcomelt)

    - [`NumericalBidiagonalForm(M): Mtrx[RngReCom] → Mtrx, Mtrx, Mtrx`](numerical-linalg.md#function-numericalbidiagonalform-mtrx-rngrecom)

    - [`NumericalSingularValueDecomposition(M): Mtrx[RngReCom] → Mtrx, Mtrx, Mtrx`](numerical-linalg.md#function-numericalsingularvaluedecomposition-mtrx-rngrecom)

    - [`Example: Numerlinalg Examples3`](numerical-linalg.md#example-ex-604853)

    - [`Example: Numerlinalg Examples4`](numerical-linalg.md#example-ex-4e7c97)

- [Miscellaneous Operations on Matrices](misc.md)

  - [`FrobeniusImage(A, e): Mtrx, RngIntElt → Mtrx`](misc.md#function-frobeniusimage-mtrx-rngintelt)
