170 SUBROUTINE ssytd2( UPLO, N, A, LDA, D, E, TAU, INFO )
181 REAL A( LDA, * ), D( * ), E( * ), TAU( * )
188 parameter( one = 1.0, zero = 0.0, half = 1.0 / 2.0 )
211 upper = lsame( uplo,
'U' )
212 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
214 ELSE IF( n.LT.0 )
THEN
216 ELSE IF( lda.LT.max( 1, n ) )
THEN
220 CALL xerbla(
'SSYTD2', -info )
233 DO 10 i = n - 1, 1, -1
238 CALL slarfg( i, a( i, i+1 ), a( 1, i+1 ), 1, taui )
241 IF( taui.NE.zero )
THEN
249 CALL ssymv( uplo, i, taui, a, lda, a( 1, i+1 ), 1,
255 alpha = -half*taui*sdot( i, tau, 1, a( 1, i+1 ), 1 )
256 CALL saxpy( i, alpha, a( 1, i+1 ), 1, tau, 1 )
261 CALL ssyr2( uplo, i, -one, a( 1, i+1 ), 1, tau, 1, a,
266 d( i+1 ) = a( i+1, i+1 )
279 CALL slarfg( n-i, a( i+1, i ), a( min( i+2, n ), i ), 1,
283 IF( taui.NE.zero )
THEN
291 CALL ssymv( uplo, n-i, taui, a( i+1, i+1 ), lda,
292 $ a( i+1, i ), 1, zero, tau( i ), 1 )
296 alpha = -half*taui*sdot( n-i, tau( i ), 1, a( i+1,
299 CALL saxpy( n-i, alpha, a( i+1, i ), 1, tau( i ), 1 )
304 CALL ssyr2( uplo, n-i, -one, a( i+1, i ), 1, tau( i ),
306 $ a( i+1, i+1 ), lda )
subroutine ssymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
SSYMV
subroutine ssyr2(uplo, n, alpha, x, incx, y, incy, a, lda)
SSYR2
subroutine ssytd2(uplo, n, a, lda, d, e, tau, info)
SSYTD2 reduces a symmetric matrix to real symmetric tridiagonal form by an orthogonal similarity tran...