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 )
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 dpttrf(N, D, E, INFO)
DPTTRF
subroutine dpteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
DPTEQR
subroutine dbdsqr(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, WORK, INFO)
DBDSQR
subroutine xerbla(SRNAME, INFO)
XERBLA