apply the Bareiss algorithm to a Matrix
the domain of computation
rectangular Matrix of values in D
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.
Z`0`,Z`1`,Z`+`,Z`-`,Z`*`,Z`=` ≔ 0,1,`+`,`-`,`*`,`=`:
Z[Divide] := proc(a,b,q) evalb( irem(args) = 0 ) end proc:
A ≔ Matrix⁡3,4,5,7,5,7,11,13,7,11,13,17
A ≔ 34575711137111317
Download Help Document
What kind of issue would you like to report? (Optional)
Thank you for submitting feedback on this help document. Your feedback will be used
to improve Maple's help in the future.