21st March 2013
For a full matrix that is real symmetric, complex Hermitian, or complex symmetric, this module performs partial or full factorizations and performs solutions of corresponding sets of equations, paying special attention to the eﬃcient use of cache memory. In the real and complex Hermitian cases, the matrix need not be positive deﬁnite. The module performs symmetric interchanges for stability and uses both 11 and 22 pivots, assuming that the matrix is well scaled in the sense that changes that are small compared to the largest entry can be tolerated. It is suitable for use in a frontal or multifrontal solver, but may also be used for the direct solution of a full set of equations. Optionally, it may be compiled to use OpenMP.
Eliminations are limited to the leading rows and columns. Stability considerations may lead to eliminations being performed, but there is an option to force all eliminations to be performed. Using an asterisk to represent taking the transpose or Hermitian transpose of a matrix, the factorization takes the form
where has order , is a permutation matrix, is a unit lower triangular matrix of order , is block diagonal of order , and is a matrix of order . The permutation matrix has the form
where is of order . Each diagonal block of has size one or two.
The input format for is that its lower triangular part is held in lower packed format (that is, packed by columns). This format is also used for on return. The matrix is returned as a sequence of block columns, each of which consists of a triangular matrix packed by columns followed by a rectangular matrix packed by columns.
Subroutines are provided for partial solutions, that is, solving equations of the form
and the corresponding equations for a single right-hand side and solution .