Computes the inverse of a complex Hermitian matrix using the factorization computed by
?hetri_3computes the inverse of a complex Hermitian matrix A using the factorization computed by
?hetrf_rk: A = P*U*D*(U
T) or A = P*L*D*(L
T), where U (or L) is a unit upper (or lower) triangular matrix, U
H) is the conjugate of U (or L), P is a permutation matrix, P
Tis the transpose of P, and D is a Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
?hetri_3sets the leading dimension of the workspace before calling
?hetri_3x, which actually computes the inverse.
This is the blocked version of the algorithm, calling Level-3 BLAS.
- CHARACTER*1Specifies whether the details of the factorization are stored as an upper or lower triangular matrix.
- ='U': The upper triangle of A is stored.
- ='L': The lower triangle of A is stored.
- INTEGERThe order of the matrix A.n≥ 0.
- COMPLEXforchetri_3COMPLEX*16forzhetri_3Array, dimension (On entry, diagonal of the block diagonal matrix D and factor U or L as computed bylda,n).?hetrf_rk:
- Onlydiagonal elements of the Hermitian block diagonal matrix D on the diagonal of A; that is, D(k,k) = A(k,k). Superdiagonal (or subdiagonal) elements of D should be provided on entry in arraye.
- Ifuplo='U', factor U in the superdiagonal part of A. Ifuplo='L', factor L is the subdiagonal part of A.
- INTEGERThe leading dimension of the arrayA.lda≥ max(1,n).
- COMPLEXforchetri_3COMPLEX*16forzhetri_3Array, dimension (On entry, contains the superdiagonal (or subdiagonal) elements of the Hermitian block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks. Ifn).uplo='U', e(i) = D(i-1,i),i=2:N, and e(1) is not referenced. Ifuplo='L', e(i) = D(i+1,i),i=1:N-1, and e(n) is not referenced.For 1-by-1 diagonal block D(k), where 1 ≤k≤n, the elemente(k) is not referenced in both theuplo='U'anduplo='L'cases.
- INTEGERArray, dimension (Details of the interchanges and the block structure of D as determined byn).?hetrf_rk.
- INTEGERThe length of the arraywork.IfLDWORK=-1, a workspace query is assumed; the routine calculates only the optimal size of theworkarray and returns this value as the first entry of theworkarray, and no error message related tolworkis issued by XERBLA.
- COMPLEXforchetri_3COMPLEX*16forzhetri_3On exit, ifinfo= 0, the Hermitian inverse of the original matrix. Ifuplo='U', the upper triangular part of the inverse is formed and the part of A below the diagonal is not referenced. Ifuplo='L', the lower triangular part of the inverse is formed and the part of A above the diagonal is not referenced.
- COMPLEXforchetri_3COMPLEX*16forzhetri_3Array, dimension (n+NB+1)*(NB+3). On exit, ifinfo= 0,work(1) returns the optimallwork.
- = 0: Successful exit.