!----------------------------------------------------------------- ! ! Purpose ! ======= ! ! LA_POTRF computes the Cholesky factorization of a real symmetric or ! complex Hermitian positive definite matrix A. ! ! The factorization has the form ! 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 block version of the algorithm, calling Level 3 BLAS. ! ! LA_POTRF optionally estimates the reciprocal of the condition number ! (in the 1-norm) of a real symmetric or complex Hermitian positive ! definite matrix A. ! An estimate is obtained for norm(inv(A)), and the reciprocal of the ! condition number is computed as RCOND = 1 / (norm(A) * norm(inv(A))). ! ! ======= ! ! SUBROUTINE LA_POTRF( A, UPLO, RCOND, NORM, INFO ) ! (), INTENT(INOUT) :: A(:,:) ! CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO ! REAL(), INTENT(OUT), OPTIONAL :: RCOND ! CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM ! INTEGER, INTENT(OUT), OPTIONAL :: INFO ! where ! ::= REAL | COMPLEX ! ::= KIND(1.0) | KIND(1.0D0) ! ! Defaults ! ======== ! ! 1. If UPLO is not present then UPLO = 'U' is assumed. ! ! Arguments ! ========= ! ! A (input/output) either REAL or COMPLEX square array, ! shape (:,:), size(A,1) == size(A,2) >= 0. ! On entry, the symmetric (Hermitian) matrix A. ! If UPLO = 'U', the 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 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 A = U**H*U or A = L*L**H. ! ! UPLO Optional, (input) CHARACTER*1 ! If UPLO is present then: ! = 'U': Upper triangle of A is stored; ! = 'L': Lower triangle of A is stored. ! otherwise UPLO = 'U' is assumed. ! ! RCOND Optional (output) REAL ! The reciprocal of the condition number of the matrix A ! computed as RCOND = 1/(norm(A) * norm(inv(A))). ! NORM Optional (input) CHARACTER*1 ! Specifies whether the 1-norm condition number or the ! infinity-norm condition number is required: ! If NORM is present then: ! = '1', 'O' or 'o': 1-norm; ! = 'I' or 'i': infinity-norm. ! otherwise NORM = '1' is used. ! ! INFO Optional, (output) INTEGER ! If INFO is present: ! = 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. ! If INFO is not present and an error occurs, then the program ! is terminated with an error message. ! ! -------------------------------------- .