-
template<typename T>
void pstrf(char *uplo, integer *n, T *a, integer *lda, integer *piv, integer *rank, T *tol, T *work, integer *info)# PSTRF computes the Cholesky factorization with complete pivoting of a real symmetric positive semidefinite matrix.
Purpose:
PSTRF computes the Cholesky factorization with complete pivoting of a real symmetric positive semidefinite matrix A. The factorization has the form P**T * A * P = U**T * U , if UPLO = 'U', P**T * A * P = L * L**T, if UPLO = 'L', where U is an upper triangular matrix and L is lower triangular, and P is stored as vector PIV. This algorithm does not attempt to check that A is positive semidefinite. This version of the algorithm calls level 3 BLAS.
- Parameters:
UPLO – [in]
UPLO is CHARACTER*1
Specifies whether the upper or lower triangular part of the symmetric matrix A is stored.
= ‘U’: Upper triangular
= ‘L’: Lower triangular
N – [in]
N is INTEGER
The order of the matrix A. N >= 0.
A – [inout]
A is REAL array, dimension (LDA,N)
On entry, the symmetric matrix A. If UPLO = ‘U’, the leading n by n upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = ‘L’, the leading n by n lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced.
On exit, if INFO = 0, the factor U or L from the Cholesky factorization as above.LDA – [in]
LDA is INTEGER
The leading dimension of the array A. LDA >= fla_max(1,N).
PIV – [out]
PIV is INTEGER array, dimension (N)
PIV is such that the nonzero entries are P( PIV(K), K) = 1.
RANK – [out]
RANK is INTEGER
The rank of A given by the number of steps the algorithm completed.
TOL – [in]
TOL is REAL
User defined tolerance. If TOL < 0, then N*U*MAX( A(K,K)) will be used. The algorithm terminates at the (K-1)st step if the pivot <= TOL.
WORK – [out]
WORK is REAL array, dimension (2*N)
Work space.
INFO – [out]
INFO is INTEGER
< 0: If INFO = -K, the K-th argument had an illegal value,
= 0: algorithm completed successfully, and
> 0: the matrix A is either rank deficient with computed rank as returned in RANK, or is not positive semidefinite. See Section 7 of LAPACK Working Note #161 for further information.