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)
XERBLA
subroutine saxpy(N, SA, SX, INCX, SY, INCY)
SAXPY
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 ssymv(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
SSYMV
subroutine slarfg(N, ALPHA, X, INCX, TAU)
SLARFG generates an elementary reflector (Householder matrix).