get information on LU factors
[OK, nrow, ncol, lnz, unz, udiag_nz, it] = umf_luinfo(LU_ptr)
:LU_ptr a pointer to umf lu factors (L,U,p,q, R) : :OK a scalar boolean : :nrow, ncol, lnz, unz, udiag_nz, it scalars (integers) :
This function may be used to know basic information about LU factors created with umf_lufact :
first OK is %t if LU_ptr is a valid pointer to an umfpack LU numeric handle (and %f else)
if OK is %t then:
: :lnz, unz are the number of non zeros elements in L and in U; : :udiag_nz are the number of non zeros elements on the diagonal of U;
if the matrix is square ( nrow = ncol = n) then it is not inversible if udiag_nz < n (more precisely it appears to be numericaly not inversible through the LU factorization).
: :it 0 if the factors are real and 1 if they are complex. :
if OK is %f then all the others outputs are set to the empty matrix [].
// this is the test matrix from UMFPACK
A = `sparse`_( [ 2 3 0 0 0;
3 0 4 0 6;
0 -1 -3 2 0;
0 0 1 0 0;
0 4 2 0 1] );
Lup = `umf_lufact`_(A);
[OK, nrow, ncol, lnz, unz, udiag_nz, it] = umf_luinfo(Lup) // OK must be %t, nrow=ncol = 5,
[L,U,p,q,R] = `umf_luget`_(Lup);
`nnz`_(L) // must be equal to lnz
`nnz`_(U) // must be equal to unz
`umf_ludel`_(Lup) // clear memory