For a matrix that is full, symmetric and positive deﬁnite, this module performs partial factorizations and solutions of corresponding sets of equations, paying special attention to the eﬃcient use of cache memory. It uses a modiﬁcation of the code of Andersen, Gunnels, Gustavson, Reid, and Wasniewski (ACM Trans. on Math. Software, 31, 2005, 201-227). It is designed as a kernel for use in a frontal or multifrontal solver, but may also be used for the direct solution of a full set of equations.
The modiﬁcation involves limiting the eliminations to the leading columns. The factorization takes the form
where is lower triangular and both and have order .
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 matrices and are held as block matrices with blocks of size at most . Internally, we use this blocked format also for .
The module has facilities for rearranging a lower triangular matrix in lower packed format (that is, packed by columns) to this blocked format and vice-versa.
Subroutines are provided for partial forward and back substitution, that is, solving equations of the form
and the corresponding equations for a single right-hand side and solution .
There are also subroutines for solving one or more sets of equations after a full factorization () and for extracting the diagonal of .