Computes the factorization of a complex hermitian matrix using Aasen's algorithm.
?hetrf_aacomputes the factorization of a complex Hermitian matrix
Ausing Aasen's algorithm. The form of the factorization is
Hwhere U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is a Hermitian tridiagonal matrix. This is the blocked version of the algorithm, calling Level 3 BLAS.
- = 'U': Upper triangle ofCHARACTER*1.Ais stored; = 'L': Lower triangle ofais stored.
- The order of the matrixINTEGER.A.n≥0.
- COMPLEXforchetrf_aaCOMPLEX*16forzhetrf_aaArray of size(. On entry, the Hermitian matrixlda,n)A.Ifuplo= 'U', the leadingn-by-nupper triangular part ofacontains the upper triangular part of the matrixA, and the strictly lower triangular part ofais not referenced.Ifuplo= 'L', the leadingn-by-nlower triangular part ofacontains the lower triangular part of the matrixA, and the strictly upper triangular part ofais not referenced.
- The leading dimension of the arrayINTEGER.a.lda≥max(1,n).
- The length ofINTEGER.work.lwork≥2*n. For optimum performancelwork≥n*(1 +nb), wherenbis the optimal block size. Iflwork= -1, then a workspace query is assumed; the routine only calculates the optimal size of theworkarray, returns this value as the first entry of theworkarray, and no error message related tolworkis issued byxerbla.
- On exit, the tridiagonal matrix is stored in the diagonals and the subdiagonals ofajust below (or above) the diagonals, andLis stored below (or above) the subdiagonals, whenuplois 'L' (or 'U').
- array, dimension (INTEGER.n) On exit, it contains the details of the interchanges: the row and columnkofawere interchanged with the row and columnipiv(.k)
- COMPLEXforchetrf_aaCOMPLEX*16forzhetrf_aaArray of size (max(1,lwork)). On exit, ifinfo= 0,work(1)returns the optimallwork.
- INTEGER.Ifinfo= 0: successful exit < 0: ifinfo= -i, thei-th argument had an illegal value,Ifinfo> 0: ifinfo=i,Dis exactly zero. The factorization has been completed, but the block diagonal matrixi,iDis exactly singular, and division by zero will occur if it is used to solve a system of equations.