LinearAlgebra[Generic][BareissAlgorithm] - apply the Bareiss algorithm to a Matrix
|
Calling Sequence
|
|
BareissAlgorithm[D](A)
BareissAlgorithm[D](A,r,d)
|
|
Parameters
|
|
D
|
-
|
the domain of computation
|
A
|
-
|
rectangular Matrix of values in D
|
r
|
-
|
name
|
d
|
-
|
name
|
|
|
|
|
Description
|
|
•
|
The (indexed) parameter D specifies the domain of computation, an integral domain (a commutative ring with exact division). It must be a Maple table/module which has the following values/exports:
|
|
D[`0`] : a constant for the zero of the ring D
|
|
D[`1`] : a constant for the (multiplicative) identity of D
|
|
D[`+`] : a procedure for adding elements of D (nary)
|
|
D[`-`] : a procedure for negating and subtracting elements of D (unary and binary)
|
|
D[`*`] : a procedure for multiplying elements of D (binary and commutative)
|
|
D[`=`] : a boolean procedure for testing if two elements of D are equal
|
|
D[Divide] : a boolean procedure for testing if a | b in D, and if so assigns q the value of a / b.
|
•
|
BareissAlgorithm[D](A) runs Bareiss' fraction-free row reduction on a copy of A.
|
•
|
The output Matrix B is upper triangular, and the entry B[i,i] is the determinant of the principal i x i submatrix of A. Thus if A is a square Matrix of dimension n, then B[n,n] is the determinant of A up to a unit.
|
|
|
Examples
|
|
>
|
|
>
|
|
>
|
Z[Divide] := proc(a,b,q) evalb( irem(args) = 0 ) end proc:
|
>
|
|
| (1) |
>
|
|
| (2) |
>
|
|
| (3) |
|
|
Download Help Document
Was this information helpful?