146 SUBROUTINE zpteqr( COMPZ, N, D, E, Z, LDZ, WORK, INFO )
158 DOUBLE PRECISION d( * ), e( * ), work( * )
159 COMPLEX*16 z( ldz, * )
165 COMPLEX*16 czero, cone
166 parameter( czero = ( 0.0d+0, 0.0d+0 ),
167 $ cone = ( 1.0d+0, 0.0d+0 ) )
177 COMPLEX*16 c( 1, 1 ), vt( 1, 1 )
180 INTEGER i, icompz, nru
191 IF(
lsame( compz,
'N' ) )
THEN
193 ELSE IF(
lsame( compz,
'V' ) )
THEN
195 ELSE IF(
lsame( compz,
'I' ) )
THEN
200 IF( icompz.LT.0 )
THEN
202 ELSE IF( n.LT.0 )
THEN
204 ELSE IF( ( ldz.LT.1 ) .OR. ( icompz.GT.0 .AND. ldz.LT.max( 1,
209 CALL
xerbla(
'ZPTEQR', -info )
224 $ CALL
zlaset(
'Full', n, n, czero, cone, z, ldz )
228 CALL
dpttrf( n, d, e, info )
232 d( i ) = sqrt( d( i ) )
235 e( i ) = e( i )*d( i )
241 IF( icompz.GT.0 )
THEN
246 CALL
zbdsqr(
'Lower', n, 0, nru, 0, d, e, vt, 1, z, ldz, c, 1,
253 d( i ) = d( i )*d( i )
subroutine zbdsqr(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, RWORK, INFO)
ZBDSQR
subroutine dpttrf(N, D, E, INFO)
DPTTRF
subroutine zpteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
ZPTEQR
subroutine xerbla(SRNAME, INFO)
XERBLA
logical function lsame(CA, CB)
LSAME
subroutine zlaset(UPLO, M, N, ALPHA, BETA, A, LDA)
ZLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...