.TH IM_MATINV 3 "2 May 1991"
.SH NAME
im_matinv, im_matmul, im_mattrn \- matrix operations on DOUBLEMASKs

.SH SYNOPSIS
.B #include <vips/vips.h>

.B DOUBLEMASK *im_matinv( const DOUBLEMASK *in, const char *name );

.B int im_matinv_inplace( DOUBLEMASK *mat );

.B DOUBLEMASK *im_matmul( in1, in2, name )
.br
.B DOUBLEMASK *in1, *in2;
.br
.B char *name;

.B DOUBLEMASK *im_matcat( in1, in2, name )
.br
.B DOUBLEMASK *in1, *in2;
.br
.B char *name;

.B DOUBLEMASK *im_mattrn( in, name )
.br
.B DOUBLEMASK *in;
.br
.B char *name;

.SH 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
.BR "im_matinv_inplace(3)" ".

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

.B im_matinv_inplace(3)
is as
.B im_matinv(3)
except that it overwrites its input.

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

.B 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.

.B im_mattrn()
transposes matrix in, returning the transpose in new matrix called name.
.SH NOTES
.B DO NOT
use matrix inversion to solve systems of linear equations (SLEs).  The 
routines
.B im_lu_decomp(3)
and
.B im_lu_solve(3)
are more efficient, even for a single SLE.

.SH RETURN VALUE
The functions returns a new DOUBLEMASK on sucess, and NULL on failure.
.PP
.B im_matinv_inplace(3)
returns zero on success, and -1 on failure.

.SH SEE\ ALSO
im_create_dmask(3), im_measure(3), etc.  im_lu_decomp(3), im_lu_solve(3)

.SH COPYRIGHT
National Gallery, 1992.  Tom Vajzovic, 2006
.SH AUTHORS
J. Cupitt
.br
Tom Vajzovic

