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 zpteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
ZPTEQR
subroutine dpttrf(N, D, E, INFO)
DPTTRF
subroutine xerbla(SRNAME, INFO)
XERBLA
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...
subroutine zbdsqr(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, RWORK, INFO)
ZBDSQR