144 SUBROUTINE zpteqr( COMPZ, N, D, E, Z, LDZ, WORK, INFO )
155 DOUBLE PRECISION D( * ), E( * ), WORK( * )
156 COMPLEX*16 Z( ldz, * )
162 COMPLEX*16 CZERO, CONE
163 parameter( czero = ( 0.0d+0, 0.0d+0 ),
164 $ cone = ( 1.0d+0, 0.0d+0 ) )
174 COMPLEX*16 C( 1, 1 ), VT( 1, 1 )
177 INTEGER I, ICOMPZ, NRU
188 IF( lsame( compz,
'N' ) )
THEN 190 ELSE IF( lsame( compz,
'V' ) )
THEN 192 ELSE IF( lsame( compz,
'I' ) )
THEN 197 IF( icompz.LT.0 )
THEN 199 ELSE IF( n.LT.0 )
THEN 201 ELSE IF( ( ldz.LT.1 ) .OR. ( icompz.GT.0 .AND. ldz.LT.max( 1,
206 CALL xerbla(
'ZPTEQR', -info )
221 $
CALL zlaset(
'Full', n, n, czero, cone, z, ldz )
225 CALL dpttrf( n, d, e, info )
229 d( i ) = sqrt( d( i ) )
232 e( i ) = e( i )*d( i )
238 IF( icompz.GT.0 )
THEN 243 CALL zbdsqr(
'Lower', n, 0, nru, 0, d, e, vt, 1, z, ldz, c, 1,
250 d( i ) = d( i )*d( i )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zpteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
ZPTEQR
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 dpttrf(N, D, E, INFO)
DPTTRF
subroutine zbdsqr(UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, RWORK, INFO)
ZBDSQR