146 SUBROUTINE spteqr( COMPZ, N, D, E, Z, LDZ, WORK, INFO )
158 REAL D( * ), E( * ), WORK( * ), Z( ldz, * )
165 parameter( zero = 0.0e0, one = 1.0e0 )
175 REAL C( 1, 1 ), VT( 1, 1 )
178 INTEGER I, ICOMPZ, NRU
189 IF( lsame( compz,
'N' ) )
THEN 191 ELSE IF( lsame( compz,
'V' ) )
THEN 193 ELSE IF( lsame( compz,
'I' ) )
THEN 198 IF( icompz.LT.0 )
THEN 200 ELSE IF( n.LT.0 )
THEN 202 ELSE IF( ( ldz.LT.1 ) .OR. ( icompz.GT.0 .AND. ldz.LT.max( 1,
207 CALL xerbla(
'SPTEQR', -info )
222 $
CALL slaset(
'Full', n, n, zero, one, z, ldz )
226 CALL spttrf( n, d, e, info )
230 d( i ) = sqrt( d( i ) )
233 e( i ) = e( i )*d( i )
239 IF( icompz.GT.0 )
THEN 244 CALL sbdsqr(
'Lower', n, 0, nru, 0, d, e, vt, 1, z, ldz, c, 1,
251 d( i ) = d( i )*d( i )
subroutine sbdsqr(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, WORK, INFO)
SBDSQR
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine spteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
SPTEQR
subroutine slaset(UPLO, M, N, ALPHA, BETA, A, LDA)
SLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...
subroutine spttrf(N, D, E, INFO)
SPTTRF