172 SUBROUTINE ssytd2( UPLO, N, A, LDA, D, E, TAU, INFO )
183 REAL A( LDA, * ), D( * ), E( * ), TAU( * )
190 parameter( one = 1.0, zero = 0.0, half = 1.0 / 2.0 )
213 upper = lsame( uplo,
'U' )
214 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
216 ELSE IF( n.LT.0 )
THEN
218 ELSE IF( lda.LT.max( 1, n ) )
THEN
222 CALL xerbla(
'SSYTD2', -info )
235 DO 10 i = n - 1, 1, -1
240 CALL slarfg( i, a( i, i+1 ), a( 1, i+1 ), 1, taui )
243 IF( taui.NE.zero )
THEN
251 CALL ssymv( uplo, i, taui, a, lda, a( 1, i+1 ), 1, zero,
256 alpha = -half*taui*sdot( i, tau, 1, a( 1, i+1 ), 1 )
257 CALL saxpy( i, alpha, a( 1, i+1 ), 1, tau, 1 )
262 CALL ssyr2( uplo, i, -one, a( 1, i+1 ), 1, tau, 1, a,
267 d( i+1 ) = a( i+1, i+1 )
280 CALL slarfg( n-i, a( i+1, i ), a( min( i+2, n ), i ), 1,
284 IF( taui.NE.zero )
THEN
292 CALL ssymv( uplo, n-i, taui, a( i+1, i+1 ), lda,
293 $ a( i+1, i ), 1, zero, tau( i ), 1 )
297 alpha = -half*taui*sdot( n-i, tau( i ), 1, a( i+1, i ),
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 ), 1,
305 $ a( i+1, i+1 ), lda )
subroutine xerbla(srname, info)
subroutine saxpy(n, sa, sx, incx, sy, incy)
SAXPY
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...
subroutine slarfg(n, alpha, x, incx, tau)
SLARFG generates an elementary reflector (Householder matrix).