# zef man page

zef — convert a matrix to echelon form

## Synopsis

**zef** [Options] *<Inp> <Out>*

## Description

This program reads in a matrix, performs a Gaussian elimination to put the matrix into semi-echelon form, and writes out the result.

A matrix is in semi-echelon form, if the first non-zero 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 non-zero entry in each row is later than the first non-zero 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 null-space program. There is no need for the input matrix to be square, and the output may also not be square.

## Options

**-Q**- Quiet, no messages.
**-V**- Verbose, more messages.
**-T***<MaxTime>*- Set CPU time limit
**-G**- Produce output in GAP format. This option implies -Q.

## Input Files

*Inp*- The matrix.

## Output Files

*Out*- The reduced matrix.