191 SUBROUTINE dsytrd( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO )
199 INTEGER INFO, LDA, LWORK, N
202 DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAU( * ),
210 parameter( one = 1.0d+0 )
213 LOGICAL LQUERY, UPPER
214 INTEGER I, IINFO, IWS, J, KK, LDWORK, LWKOPT, NB,
226 EXTERNAL lsame, ilaenv
233 upper = lsame( uplo,
'U' )
234 lquery = ( lwork.EQ.-1 )
235 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
237 ELSE IF( n.LT.0 )
THEN
239 ELSE IF( lda.LT.max( 1, n ) )
THEN
241 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
249 nb = ilaenv( 1,
'DSYTRD', uplo, n, -1, -1, -1 )
255 CALL xerbla(
'DSYTRD', -info )
257 ELSE IF( lquery )
THEN
270 IF( nb.GT.1 .AND. nb.LT.n )
THEN
275 nx = max( nb, ilaenv( 3,
'DSYTRD', uplo, n, -1, -1, -1 ) )
282 IF( lwork.LT.iws )
THEN
288 nb = max( lwork / ldwork, 1 )
289 nbmin = ilaenv( 2,
'DSYTRD', uplo, n, -1, -1, -1 )
305 kk = n - ( ( n-nx+nb-1 ) / nb )*nb
306 DO 20 i = n - nb + 1, kk + 1, -nb
312 CALL dlatrd( uplo, i+nb-1, nb, a, lda, e, tau, work,
318 CALL dsyr2k( uplo,
'No transpose', i-1, nb, -one, a( 1, i ),
319 $ lda, work, ldwork, one, a, lda )
324 DO 10 j = i, i + nb - 1
325 a( j-1, j ) = e( j-1 )
332 CALL dsytd2( uplo, kk, a, lda, d, e, tau, iinfo )
337 DO 40 i = 1, n - nx, nb
343 CALL dlatrd( uplo, n-i+1, nb, a( i, i ), lda, e( i ),
344 $ tau( i ), work, ldwork )
349 CALL dsyr2k( uplo,
'No transpose', n-i-nb+1, nb, -one,
350 $ a( i+nb, i ), lda, work( nb+1 ), ldwork, one,
351 $ a( i+nb, i+nb ), lda )
356 DO 30 j = i, i + nb - 1
364 CALL dsytd2( uplo, n-i+1, a( i, i ), lda, d( i ), e( i ),
subroutine xerbla(srname, info)
subroutine dsyr2k(uplo, trans, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
DSYR2K
subroutine dsytd2(uplo, n, a, lda, d, e, tau, info)
DSYTD2 reduces a symmetric matrix to real symmetric tridiagonal form by an orthogonal similarity tran...
subroutine dsytrd(uplo, n, a, lda, d, e, tau, work, lwork, info)
DSYTRD
subroutine dlatrd(uplo, n, nb, a, lda, e, tau, w, ldw)
DLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal fo...