Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
A newer version of this document is available. Customers should click here to go to the newest version.
?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, lapack.f90
 
Description
The routine computes the Cholesky factorization with complete pivoting of a real symmetric (complex Hermitian) positive semidefinite matrix. The form of the factorization is:
PT * A * P = UT * U, if uplo ='U' for real flavors,
PT * A * P = UH * U, if uplo ='U' for complex flavors,
PT * A * P = L * LT, if uplo ='L' for real flavors,
PT * A * P = L * LH, 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*ε*max(Ak,k), where ε 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 Ppiv(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.  |