Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?pstrf
Computes the Cholesky factorization with complete pivoting of a real symmetric (complex Hermitian) positive semidefinite matrix.
Syntax
call spstrf ( uplo , n , a , lda , piv , rank , tol , work , info )
call dpstrf ( uplo , n , a , lda , piv , rank , tol , work , info )
call cpstrf ( uplo , n , a , lda , piv , rank , tol , work , info )
call zpstrf ( uplo , n , a , lda , piv , rank , tol , work , info )
Include Files
mkl.fi , mkl_lapack.f90
Description
spstrf dpstrf cpstrf zpstrf pstrf
The routine computes the Cholesky factorization with complete pivoting of a real symmetric (complex Hermitian) positive semidefinite matrix. The form of the factorization is:
\(P^{T} * A * P = U^{T} * U\) , if uplo = ‘U’ for real flavors,
\(P^{T} * A * P = U^{H} * U\) , if uplo = ‘U’ for complex flavors,
\(P^{T} * A * P = L * L^{T}\) , if uplo = ‘L’ for real flavors,
\(P^{T} * A * P = L * L^{H}\) , if uplo = ‘L’ for complex flavors,
where \(P\) is a permutation matrix stored as vector piv , and \(U\) and \(L\) are upper and lower triangular matrices, respectively.
This algorithm does not attempt to check that \(A\) is positive semidefinite. This version of the algorithm calls level 3 BLAS.
Input Parameters
uplo
CHARACTER*1 . Must be ‘U’ or ‘L’ .
Indicates whether the upper or lower triangular part of A is stored:
If uplo = 'U' , the array a stores the upper triangular part of the matrix A , and the strictly lower triangular part of the matrix is not referenced.
If uplo = 'L' , the array a stores the lower triangular part of the matrix A , and the strictly upper triangular part of the matrix is not referenced.
n
INTEGER . The order of matrix A ; n ≥ 0.
a
REAL for spstrf
DOUBLE PRECISION for dpstrf
COMPLEX for cpstrf
DOUBLE COMPLEX for zpstrf .
Array a , size (lda,*) . The array a contains either the upper or the lower triangular part of the matrix A (see uplo ). The second dimension of a must be at least max(1, n) .
work
REAL for spstrf and cpstrf
DOUBLE PRECISION for dpstrf and zpstrf .
work(*) is a workspace array. The dimension of work is at least max(1,2*n) .
tol
REAL for single precision flavors
DOUBLE PRECISION for double precision flavors.
User defined tolerance. If tol < 0, then \(n * \varepsilon * max(A_{kk})\), where \(\varepsilon\) is the machine precision, will be used (see Error Analysis for the definition of machine precision). The algorithm terminates at the (k-1) -st step, if the pivot ≤ tol .
lda
INTEGER . The leading dimension of a ; at least max(1, n) .
Output Parameters
a
If info = 0 , the factor U or L from the Cholesky factorization is as described in Description .
piv
INTEGER .
Array, size at least max(1, n) . The array piv is such that the nonzero entries are \(P_{piv(k),k}\) (1 ≤ k ≤ n ).
rank
INTEGER .
The rank of a given by the number of steps the algorithm completed.
info
INTEGER .
If info = 0 , the execution is successful.
If info = -k , the k- th argument had an illegal value.
If info > 0 , the matrix A is either rank deficient with a computed rank as returned in rank , or is not positive semidefinite.
Return Values
No return value, info is an Output Parameter.