ABSTRACT

A. dec Decomposes the n×n matrix A in the form LU=PA, where L is lower triangular, U is unit upper triangular, and P is a permutation matrix. Procedure parameters: void dec (a,n,aux,p) a: double a[1:n,1:n]; entry: the matrix to be decomposed; exit: the calculated lower triangular matrix and unit upper triangular

matrix with its unit diagonal omitted; n: int; the order of the matrix; aux: double aux[1:3]; entry: aux[2]: a relative tolerance: a reasonable choice for this value is

an estimate of the relative precision of the matrix elements; however, it should not be chosen smaller than the machine precision;

exit: aux[1]: if R is the number of elimination steps performed (see aux[3]), then aux[1] equals 1 if the determinant of the principal submatrix of order R is positive, else aux[1] equals -1;

aux[3]: the number of elimination steps performed; if aux[3]<n then the process has been broken off because the selected pivot is too small relative to the maximum of the Euclidean norms of the rows of the given matrix;

p: int p[1:n]; exit: the pivot indices; row i and row p[i] are interchanged in the i-th

iteration. Procedures used: matmat, mattam, ichrow. Remark: The decomposition uses only partial pivoting [Dek68, Wi63, Wi65]. Since,

in exceptional cases, partial pivoting may yield useless results, even for well-conditioned matrices, the user is advised to use the procedure gsselm. However, if the number of variables is small relative to the number of binary digits in the mantissa of the number representation then the procedure dec may also be used. Refer to the procedure gsselm for more details.