189 SUBROUTINE zhetrd( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK,
198 INTEGER INFO, LDA, LWORK, N
201 DOUBLE PRECISION D( * ), E( * )
202 COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
209 parameter( one = 1.0d+0 )
211 parameter( cone = ( 1.0d+0, 0.0d+0 ) )
214 LOGICAL LQUERY, UPPER
215 INTEGER I, IINFO, IWS, J, KK, LDWORK, LWKOPT, NB,
227 EXTERNAL lsame, ilaenv
234 upper = lsame( uplo,
'U' )
235 lquery = ( lwork.EQ.-1 )
236 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
238 ELSE IF( n.LT.0 )
THEN
240 ELSE IF( lda.LT.max( 1, n ) )
THEN
242 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
250 nb = ilaenv( 1,
'ZHETRD', uplo, n, -1, -1, -1 )
251 lwkopt = max( 1, n*nb )
256 CALL xerbla(
'ZHETRD', -info )
258 ELSE IF( lquery )
THEN
271 IF( nb.GT.1 .AND. nb.LT.n )
THEN
276 nx = max( nb, ilaenv( 3,
'ZHETRD', uplo, n, -1, -1, -1 ) )
283 IF( lwork.LT.iws )
THEN
289 nb = max( lwork / ldwork, 1 )
290 nbmin = ilaenv( 2,
'ZHETRD', uplo, n, -1, -1, -1 )
306 kk = n - ( ( n-nx+nb-1 ) / nb )*nb
307 DO 20 i = n - nb + 1, kk + 1, -nb
313 CALL zlatrd( uplo, i+nb-1, nb, a, lda, e, tau, work,
319 CALL zher2k( uplo,
'No transpose', i-1, nb, -cone,
320 $ a( 1, i ), lda, work, ldwork, one, a, lda )
325 DO 10 j = i, i + nb - 1
326 a( j-1, j ) = e( j-1 )
327 d( j ) = dble( a( j, j ) )
333 CALL zhetd2( uplo, kk, a, lda, d, e, tau, iinfo )
338 DO 40 i = 1, n - nx, nb
344 CALL zlatrd( uplo, n-i+1, nb, a( i, i ), lda, e( i ),
345 $ tau( i ), work, ldwork )
350 CALL zher2k( uplo,
'No transpose', n-i-nb+1, nb, -cone,
351 $ a( i+nb, i ), lda, work( nb+1 ), ldwork, one,
352 $ a( i+nb, i+nb ), lda )
357 DO 30 j = i, i + nb - 1
359 d( j ) = dble( a( j, j ) )
365 CALL zhetd2( uplo, n-i+1, a( i, i ), lda, d( i ), e( i ),
subroutine zher2k(uplo, trans, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
ZHER2K
subroutine zhetd2(uplo, n, a, lda, d, e, tau, info)
ZHETD2 reduces a Hermitian matrix to real symmetric tridiagonal form by an unitary similarity transfo...
subroutine zhetrd(uplo, n, a, lda, d, e, tau, work, lwork, info)
ZHETRD
subroutine zlatrd(uplo, n, nb, a, lda, e, tau, w, ldw)
ZLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal fo...