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)
subroutine dbdsqr(uplo, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, ldc, work, info)
DBDSQR
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 dpteqr(compz, n, d, e, z, ldz, work, info)
DPTEQR
subroutine dpttrf(n, d, e, info)
DPTTRF