MeatAxe
2.4

zef Options [G] Inp Out
This program reads in a matrix, performs a Gaussian elimination to put the matrix into semiechelon form, and writes out the result.
A matrix is in semiechelon form, if the first nonzero entry in each row entry is a 1, and all entries exactly below that 1 are zero. Here is an example:
000112312312342412123 012012312312231231233 000000001345121223233 102012330332333312212 001021230333323123123 000001230311212112121
A matrix is in (full) echelon form if the rows are further permuted so that the first nonzero entry in each row is later than the first nonzero entry in all previous rows. There is no real need to do this row permutation in the MeatAxe system, and the permutation is not done by this program.
At the end, the matrix may have fewer rows than it started with, since the rows may have been linearly dependent. The rows of the output matrix are always linearly independent and span the same space as the rows of the input matrix. A message
RANK nnn
is printed at the end of the run to notify the operator of the size of the output matrix. This program may be used to find the rank of matrix, being faster than the nullspace program. There is no need for the input matrix to be square, and the output may also not be square.