.TH IM_MATINV 3 "2 May 1991" .SH NAME im_matinv, im_matmul, im_mattrn \- matrix operations on DOUBLEMASKs .SH SYNOPSIS .B #include .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