170 SUBROUTINE dsytd2( UPLO, N, A, LDA, D, E, TAU, INFO )
181 DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAU( * )
187 DOUBLE PRECISION ONE, ZERO, HALF
188 parameter( one = 1.0d0, zero = 0.0d0,
189 $ half = 1.0d0 / 2.0d0 )
194 DOUBLE PRECISION ALPHA, TAUI
201 DOUBLE PRECISION DDOT
212 upper = lsame( uplo,
'U' )
213 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
215 ELSE IF( n.LT.0 )
THEN
217 ELSE IF( lda.LT.max( 1, n ) )
THEN
221 CALL xerbla(
'DSYTD2', -info )
234 DO 10 i = n - 1, 1, -1
239 CALL dlarfg( i, a( i, i+1 ), a( 1, i+1 ), 1, taui )
242 IF( taui.NE.zero )
THEN
250 CALL dsymv( uplo, i, taui, a, lda, a( 1, i+1 ), 1,
256 alpha = -half*taui*ddot( i, tau, 1, a( 1, i+1 ), 1 )
257 CALL daxpy( i, alpha, a( 1, i+1 ), 1, tau, 1 )
262 CALL dsyr2( uplo, i, -one, a( 1, i+1 ), 1, tau, 1, a,
267 d( i+1 ) = a( i+1, i+1 )
280 CALL dlarfg( n-i, a( i+1, i ), a( min( i+2, n ), i ), 1,
284 IF( taui.NE.zero )
THEN
292 CALL dsymv( uplo, n-i, taui, a( i+1, i+1 ), lda,
293 $ a( i+1, i ), 1, zero, tau( i ), 1 )
297 alpha = -half*taui*ddot( n-i, tau( i ), 1, a( i+1,
300 CALL daxpy( n-i, alpha, a( i+1, i ), 1, tau( i ), 1 )
305 CALL dsyr2( uplo, n-i, -one, a( i+1, i ), 1, tau( i ),
307 $ a( i+1, i+1 ), lda )
subroutine dsymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
DSYMV
subroutine dsyr2(uplo, n, alpha, x, incx, y, incy, a, lda)
DSYR2
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...