191 SUBROUTINE chetrd( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO )
199 INTEGER INFO, LDA, LWORK, N
203 COMPLEX A( LDA, * ), TAU( * ), WORK( * )
210 parameter( one = 1.0e+0 )
212 parameter( cone = ( 1.0e+0, 0.0e+0 ) )
215 LOGICAL LQUERY, UPPER
216 INTEGER I, IINFO, IWS, J, KK, LDWORK, LWKOPT, NB,
228 EXTERNAL lsame, ilaenv
235 upper = lsame( uplo,
'U' )
236 lquery = ( lwork.EQ.-1 )
237 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
239 ELSE IF( n.LT.0 )
THEN
241 ELSE IF( lda.LT.max( 1, n ) )
THEN
243 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
251 nb = ilaenv( 1,
'CHETRD', uplo, n, -1, -1, -1 )
257 CALL xerbla(
'CHETRD', -info )
259 ELSE IF( lquery )
THEN
272 IF( nb.GT.1 .AND. nb.LT.n )
THEN
277 nx = max( nb, ilaenv( 3,
'CHETRD', uplo, n, -1, -1, -1 ) )
284 IF( lwork.LT.iws )
THEN
290 nb = max( lwork / ldwork, 1 )
291 nbmin = ilaenv( 2,
'CHETRD', uplo, n, -1, -1, -1 )
307 kk = n - ( ( n-nx+nb-1 ) / nb )*nb
308 DO 20 i = n - nb + 1, kk + 1, -nb
314 CALL clatrd( uplo, i+nb-1, nb, a, lda, e, tau, work,
320 CALL cher2k( uplo,
'No transpose', i-1, nb, -cone,
321 $ a( 1, i ), lda, work, ldwork, one, a, lda )
326 DO 10 j = i, i + nb - 1
327 a( j-1, j ) = e( j-1 )
328 d( j ) = real( a( j, j ) )
334 CALL chetd2( uplo, kk, a, lda, d, e, tau, iinfo )
339 DO 40 i = 1, n - nx, nb
345 CALL clatrd( uplo, n-i+1, nb, a( i, i ), lda, e( i ),
346 $ tau( i ), work, ldwork )
351 CALL cher2k( uplo,
'No transpose', n-i-nb+1, nb, -cone,
352 $ a( i+nb, i ), lda, work( nb+1 ), ldwork, one,
353 $ a( i+nb, i+nb ), lda )
358 DO 30 j = i, i + nb - 1
360 d( j ) = real( a( j, j ) )
366 CALL chetd2( uplo, n-i+1, a( i, i ), lda, d( i ), e( i ),
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cher2k(UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CHER2K
subroutine chetd2(UPLO, N, A, LDA, D, E, TAU, INFO)
CHETD2 reduces a Hermitian matrix to real symmetric tridiagonal form by an unitary similarity transfo...
subroutine chetrd(UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO)
CHETRD
subroutine clatrd(UPLO, N, NB, A, LDA, E, TAU, W, LDW)
CLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal fo...