HP MLIB User's Guide Vol. 2 7th Ed.
746 HP MLIB LAPACK User’s Guide
The input argument: options
as well as the following options, which are described in more detail
below:
• options->Equil, to specify how to scale the rows and columns of A to
equilibrate it (to try to reduce its condition number and so improve
the accuracy of the computed solution).
•
options->RowPerm, to specify how to permute the rows of A (typically
to control numerical stability).
•
options->ColPerm, to specify how to permute the columns of A
(typically to control fill-in and enhance parallelism during
factorization).
• options->ReplaceTinyPivot, to specify how to deal with tiny pivots
encountered during factorization (to control numerical stability).
The outputs returned include:
• ScalePermstruct, modified to describe how the input matrix A was
equilibrated and permuted:
• ScalePermstruct->DiagScale, indicates whether the rows and/or
columns of A were scaled.
• ScalePermstruct->R, array of row scale factors.
• ScalePermstruct->C, arrary of column scale factors.
• ScalePermstruct->r, row permutation vector.
• ScalePermstruct->c, column permutation vector.
Part of ScalePermstruct may also need to be supplied on input,
depending on options->RowPerm and options->ColPerm as described
later.
• A, the input matrix A overwritten by the scaled and permuted matrix
Pc*Pr*diag(R)*A*diag(C) where:
Pr and Pc are row and column permutation matrices determined by
ScalePermstruct->perm_r and ScalePermstruct->perm_c
respectively, and
diag(R) and diag(C) are diagonal scaling matrices determined by
ScalePermstruct->DiagScale, ScalePermstruct->R and
ScalePermstruct->C.
• LUstruct, which contains the L and U factorization of A1 where:
A1 = Pc*Pr*diag(R)*A*diag(C)*Pc^T = L*U
(Note that A1 = Aout*Pc^T, where Aout is the matrix stored in A on
output.)
2. The second value of options->Fact assumes that a matrix with the same
sparsity pattern as A has already been factored.