Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?hetf2
Computes the factorization of a complex Hermitian matrix, using the diagonal pivoting method (unblocked algorithm).
Syntax
call chetf2(uplo, n, a, lda, ipiv, info)
call zhetf2(uplo, n, a, lda, ipiv, info)
Include Files
mkl.fi
Description
The routine computes the factorization of a complex Hermitian matrix A using the Bunch-Kaufman diagonal pivoting method:
A = U*D*U^{H} or A = L*D*L^{H}
where U (or L ) is a product of permutation and unit upper (lower) triangular matrices, UH is the conjugate transpose of U , and D is Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
This is the unblocked version of the algorithm, calling BLAS Level 2 Routines .
Input Parameters
- uplo
-
CHARACTER*1 . Specifies whether the upper or lower triangular part of the Hermitian matrix A is stored: = ‘U’ : Upper triangular = ‘L’ : Lower triangular
- n
-
INTEGER. Specifies the order of the matrix A. The value of n must be at least zero.
- A
-
COMPLEX for chetf2 DOUBLE COMPLEX for zhetf2 . Array, DIMENSION ( lda , n ). On entry, the Hermitian 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, the block diagonal matrix D and the multipliers used to obtain the factor U or L .
- ipiv
-
INTEGER . Array, DIMENSION ( n ). Details of the interchanges and the block structure of D If ipiv(k) > 0 , then rows and columns k and ipiv(k) were interchanged and D(k,k) is a 1-by-1 diagonal block. If uplo = 'U' and ipiv(k) = ipiv( k-1) < 0 , then rows and columns k -1 and - ipiv(k) were interchanged and D(k-1:k,k-1:k ) is a 2-by-2 diagonal block. If uplo = 'L' and ipiv(k) = ipiv( k+1) < 0 , then rows and columns k +1 and - ipiv(k) were interchanged and D(k:k +1, k:k +1) is a 2-by-2 diagonal block.
info
INTEGER .
= 0: successful exit
< 0: if info = -k , the k -th argument had an illegal value
> 0: if info = k , D(k,k) is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, and division by zero will occur if it is used to solve a system of equations.