MeatAxe
2.4

znu Options [G] Matrix [NullSpace]
This program reads in a matrix and outputs a basis for its nullspace in echelon form. If the Nullspace argument is omitted the nullspace is not written out, but its dimension is still printed.
Notice that the input matrix does not need to be square.
After reading the matrix, the program generates the n×n identity matrix in memory where n is the number of rows. It then proceeds to perform row operations on the matrix until it is in echelon form. The same row operations are performed on the identity matrix, and whenever a row in the original matrix becomes zero, the corresponding row of the other matrix is marked for output. The nullspace is always reduced to echelon form.