Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?potrf2
Computes Cholesky factorization using a recursive algorithm.
Syntax
call spotrf2(uplo, n, a, lda, info)
call dpotrf2(uplo, n, a, lda, info)
call cpotrf2(uplo, n, a, lda, info)
call zpotrf2(uplo, n, a, lda, info)
Include Files
mkl.fi
Description
?potrf2 computes the Cholesky factorization of a real or complex symmetric positive definite matrix A using the recursive algorithm.
The factorization has the form
for real flavors:
\(A = U^T U\) , if uplo = ‘U’, or
\(A = L L^T\) , if uplo = ‘L’,
for complex flavors:
\(A = U^H U\) , if uplo = ‘U’,
or \(A = L L^H\) , if uplo = ‘L’,
where \(U\) is an upper triangular matrix and \(L\) is lower triangular.
This is the recursive version of the algorithm. It divides the matrix into four submatrices:
\[\begin{split}A = \begin{pmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{pmatrix}\end{split}\]
where A11 is n1 by n1 and A22 is n2 by n2 , with n1 = n /2 and n2 = n - n1 .
The subroutine calls itself to factor A11 . Update and scale A21 or A12 , update A22 then call itself to factor A22 .
Input Parameters
uplo
CHARACTER*1. = ‘U’: Upper triangle of A is stored;
= ‘L’: Lower triangle of A is stored.
- n
-
INTEGER. Specifies the order of the matrix A. The value of n must be at least zero.
- a
-
REAL for spotrf2 DOUBLE PRECISION for dpotrf2 COMPLEX for cpotrf2 DOUBLE COMPLEX for zpotrf2
Array, size ( 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.
lda
INTEGER. The leading dimension of the array a .
lda ≥ max(1, n ).
Output Parameters
- a
-
On exit, if info = 0, the factor U or L from the Cholesky factorization. For real flavors: \(A = U^T U\) or \(A = L L^T\) ; For complex flavors: \(A = U^H U\) or \(A = L L^H\) .
info
INTEGER.
= 0: successful exit
< 0: if info = - i , the i -th argument had an illegal value
> 0: if info = i , the leading minor of order i is not positive definite, and the factorization could not be completed.
Return Values
No return value, info is an Output Parameter.