DOUBLEMASK *im_matinv( const DOUBLEMASK *in, const char *name );
int im_matinv_inplace( DOUBLEMASK *mat );
DOUBLEMASK *im_matmul( in1, in2, name )
DOUBLEMASK *in1, *in2;
char *name;
DOUBLEMASK *im_matcat( in1, in2, name )
DOUBLEMASK *in1, *in2;
char *name;
DOUBLEMASK *im_mattrn( in, name )
DOUBLEMASK *in;
char *name;
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_matinv_inplace(3) is as im_matinv(3) except that it overwrites its input.
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.
im_matinv_inplace(3) returns zero on success, and -1 on failure.