DOUBLEMASK *im_mattrn( in, name ) DOUBLEMASK *in; char *name;

DESCRIPTION

These functions treat DOUBLEMASKs as matricies, performing some of the basics
of matrix algebra on them.

There should be more matrix functions: those implemeneted are just sufficient
for the Gallery's calibration routines. im_matadd, im_matidentity should
really be added.

None of these functions damage their arguments, except
im_matinv_inplace(3).

im_matinv(3)
inverts DOUBLEMASK
in,
returning a new DOUBLEMASK, called
name,
which contains the inverse of in. If no inverse exists, NULL is returned and
im_error(3)
is called with a diagnostic message.

im_matmul()
multiples the matrices held in in1 and in2, returning their product in a
matrix called name.

im_matcat()
returns a new matrix formed by appending matrix in2 to the end of matrix in1.
The two matricies must be the same width. It is useful for combining several
im_measure()s into a single matrix.

im_mattrn()
transposes matrix in, returning the transpose in new matrix called name.

NOTES

DO NOT
use matrix inversion to solve systems of linear equations (SLEs). The
routines
im_lu_decomp(3)
and
im_lu_solve(3)
are more efficient, even for a single SLE.

RETURN VALUE

The functions returns a new DOUBLEMASK on sucess, and NULL on failure.