The following is the help file for RowEchelon. It is accessible in Maple on issuing the commands

>with(share): >readlib(Echelon): >?RowEchelonTo write a help file for a Maple procedure or package, follow the format below, Then if you are using a Unix system you may use the `helptomaple' script (available from the share library) to convert your text into a Maple

`TEXT`

object. If not, you can use any good
editor to wrap each line of your file in left quotes ```

and put a comma at the end. Finally, assign this sequence
of strings to the appropriate help object as follows.
`help/text/RowEchelon` := TEXT( `FUNCTION: RowEchelon - compute the Row Echelon Decomposition of a matrix`, ` `, `CALLING SEQUENCES: R := RowEchelon(A,'dt'); or`,

`> dt;`, ` 4 `, ` ` ):The actual help file for

`RowEchelon`

, minus the quotes and
commas, follows.
FUNCTION: RowEchelon - compute the Row Echelon Decomposition of a matrix CALLING SEQUENCES: R := RowEchelon(A,'dt'); or R := RowEchelon(A,'dt','rank','P','L','U'); x := RowEchelonSolve(A,b,'dt'); (this solves the linear system Ax = b) PARAMETERS: A - input rectangular matrix with possibly symbolic entries dt - variable name for output of det(U) rank - optional variable name for the rank on output P, L, U - optional names for the other factors SYNOPSIS: - This routine computes the factorization A = P L U R where P is a permutation matrix, L is unit lower triangular, U is upper triangular, and R is the unique Row Echelon form of the matrix A. - The Row Echelon Form that is returned is correct if U is nonsingular. If A has parameters in its entries, and for some values of the parameters det(U) = 0, then the Row Echelon form must be recomputed for these values of the parameters. - infolevel[RowEchelon] := 1, 2, or 5 gives descriptive information on the progress of the computation. 5 may cause matrices to be output and may result in excessive printing. - This routine uses the environment variable Normalizer for problems with coefficients in special domains. For example, if the matrix A contains complex numbers, one sets Normalizer := evalc; prior to calling RowEchelon. For algebraic numbers, use of evala@Normal or normal@simplify instead of evalc is recommended. Use of an incorrect normalizer for the domain in question may result in erroneous results or excessive computation time. REFERENCE: The Row Echelon Decomposition of a Matrix, by Robert M. Corless, David Jeffrey, and M. A. H. Nerenberg SEE ALSO: linalg[hermite], linalg[gaussjord], linalg[smith], and linalg[ismith]. EXAMPLES: > A := array(1..3,1..4,[[1,-2,3,1],[2,k,6,6],[-1,3,k-3,0]]); [ 1 -2 3 1 ] [ ] A := [ 2 k 6 6 ] [ ] [ -1 3 k - 3 0 ] > R := RowEchelon(A,'dt','rank','P','L','U'); [ 9 + k ] [ 1 0 0 ----- ] [ 4 + k ] [ ] [ 4 ] R := [ 0 1 0 ----- ] [ 4 + k ] [ ] [ 1 ] [ 0 0 1 ----- ] [ 4 + k ] > dt; k ( 4 + k) > rank; 3 # # det(U) = k*(4+k) so U is singular when k=-4 or k=0, which # therefore need separate investigation. # > R := RowEchelon(subs(k=0,eval(A)),'dt','rank'); [ 1 0 3 3 ] [ ] R := [ 0 1 0 1 ] [ ] [ 0 0 0 0 ] > dt; 4 > rank; 2 > R := RowEchelon(subs(k=-4,eval(A)),'dt'); [ 1 0 -5 0 ] [ ] R := [ 0 1 -4 0 ] [ ] [ 0 0 0 1 ] > dt; 4

Wed Jan 31 11:33:59 EST 1996