IM_LU_DECOMP
Section: C Library Functions (3)
Updated: 18 September 2006
Index
Return to Main Contents
 
NAME
 im_lu_decomp, im_lu_solve - Solve SLEs by LU decomposition
 
SYNOPSIS
#include <vips/vips.h>
DOUBLEMASK *im_lu_decomp( const DOUBLEMASK *mat, const char *name );
int im_lu_solve( const DOUBLEMASK *lu, double *vec );
 
DESCRIPTION
im_lu_decomp(3)
allocates a DOUBLEMASK representing the LU decomposition of the matrix in 
DOUBLEMASK 
*mat, 
and gives it the filename member
name.
im_lu_solve(3)
solves the system of linear equations (SLE) Ax=b, where matrix A has already
been decomposed into LU form in DOUBLEMASK 
*lu.
Input vector b is in
*vec
and is overwritten with output vector x. 
DOUBLEMASK 
*lu
is unaltered by 
im_matinv(3),
and can be used again to solve a different SLE containing matrix A.
 
NOTES
The scale and offset members of 
*mat
are ignored.  If they are not set to 1.0 and zero respectively, you must first
call 
im_norm_dmask(3).
To understand the decomposition A=LU, see Press et al. (1992).  For the exact 
format used to represent the matrices L and U in 
*lu,
see the acompanying source code.
 
ERRORS
If matrix
*mat
is singular (non-invertible), or close to singular then
im_lu_decomp(3)
will fail, calling
im_error(3).
 
RETURN VALUE
im_lu_decomp(3)
returns a pointer to the new DOUBLEMASK, or NULL on error.
im_lu_solve(3)
always returns zero, unless 
lu
was not returned by 
im_lu_decomp(3),
when it returns -1.
 
SEE ALSO
im_create_dmask(3), im_free_dmask(3), im_norm_dmask(3), im_matinv(3)
 
REFERENCES
PRESS, W. et al, 1992.  Numerical Recipies in C; The Art of Scientific 
Computing, 2nd ed.  Cambridge: Cambridge University Press, pp. 43-50.
[Available online: 
http://www.library.cornell.edu/nr/bookcpdf.html accessed 2006-09-19]
 
COPYRIGHT
Copyright 2006, Tom Vajzovic.
 
AUTHOR
Tom Vajzovic