146 SUBROUTINE dpteqr( COMPZ, N, D, E, Z, LDZ, WORK, INFO )
158 DOUBLE PRECISION d( * ), e( * ), work( * ), z( ldz, * )
164 DOUBLE PRECISION zero, one
165 parameter( zero = 0.0d0, one = 1.0d0 )
175 DOUBLE PRECISION 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(
'DPTEQR', -info )
222 $ CALL
dlaset(
'Full', n, n, zero, one, z, ldz )
226 CALL
dpttrf( 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
dbdsqr(
'Lower', n, 0, nru, 0, d, e, vt, 1, z, ldz, c, 1,
251 d( i ) = d( i )*d( i )
LOGICAL function lsame(CA, CB)
LSAME
subroutine dpttrf(N, D, E, INFO)
DPTTRF
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dpteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
DPTEQR
subroutine dlaset(UPLO, M, N, ALPHA, BETA, A, LDA)
DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...
subroutine dbdsqr(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, WORK, INFO)
DBDSQR