144 SUBROUTINE dpteqr( COMPZ, N, D, E, Z, LDZ, WORK, INFO )
155 DOUBLE PRECISION D( * ), E( * ), WORK( * ), Z( ldz, * )
161 DOUBLE PRECISION ZERO, ONE
162 parameter( zero = 0.0d0, one = 1.0d0 )
172 DOUBLE PRECISION C( 1, 1 ), VT( 1, 1 )
175 INTEGER I, ICOMPZ, NRU
186 IF( lsame( compz,
'N' ) )
THEN 188 ELSE IF( lsame( compz,
'V' ) )
THEN 190 ELSE IF( lsame( compz,
'I' ) )
THEN 195 IF( icompz.LT.0 )
THEN 197 ELSE IF( n.LT.0 )
THEN 199 ELSE IF( ( ldz.LT.1 ) .OR. ( icompz.GT.0 .AND. ldz.LT.max( 1,
204 CALL xerbla(
'DPTEQR', -info )
219 $
CALL dlaset(
'Full', n, n, zero, one, z, ldz )
223 CALL dpttrf( n, d, e, info )
227 d( i ) = sqrt( d( i ) )
230 e( i ) = e( i )*d( i )
236 IF( icompz.GT.0 )
THEN 241 CALL dbdsqr(
'Lower', n, 0, nru, 0, d, e, vt, 1, z, ldz, c, 1,
248 d( i ) = d( i )*d( i )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dpteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
DPTEQR
subroutine dpttrf(N, D, E, INFO)
DPTTRF
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