Algorithms are presented for obtaining several canonical forms for multi-input, multi-output time-invariant linear systems. Only elementary row and column operations on the state matrix

, the input matrix

, and the output matrix

are used, in contrast to earlier methods, most of which require the explicit computation and inversion of similarity transformation matrices.