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