117 SUBROUTINE dstev( JOBZ, N, D, E, Z, LDZ, WORK, INFO )
129 DOUBLE PRECISION D( * ), E( * ), WORK( * ), Z( ldz, * )
135 DOUBLE PRECISION ZERO, ONE
136 parameter( zero = 0.0d0, one = 1.0d0 )
141 DOUBLE PRECISION BIGNUM, EPS, RMAX, RMIN, SAFMIN, SIGMA, SMLNUM,
146 DOUBLE PRECISION DLAMCH, DLANST
147 EXTERNAL lsame, dlamch, dlanst
159 wantz = lsame( jobz,
'V' )
162 IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN
164 ELSE IF( n.LT.0 )
THEN
166 ELSE IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN
171 CALL
xerbla(
'DSTEV ', -info )
188 safmin = dlamch(
'Safe minimum' )
189 eps = dlamch(
'Precision' )
190 smlnum = safmin / eps
191 bignum = one / smlnum
192 rmin = sqrt( smlnum )
193 rmax = sqrt( bignum )
198 tnrm = dlanst(
'M', n, d, e )
199 IF( tnrm.GT.zero .AND. tnrm.LT.rmin )
THEN
202 ELSE IF( tnrm.GT.rmax )
THEN
206 IF( iscale.EQ.1 )
THEN
207 CALL
dscal( n, sigma, d, 1 )
208 CALL
dscal( n-1, sigma, e( 1 ), 1 )
214 IF( .NOT.wantz )
THEN
215 CALL
dsterf( n, d, e, info )
217 CALL
dsteqr(
'I', n, d, e, z, ldz, work, info )
222 IF( iscale.EQ.1 )
THEN
228 CALL
dscal( imax, one / sigma, d, 1 )
subroutine dsteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
DSTEQR
subroutine dsterf(N, D, E, INFO)
DSTERF
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dscal(N, DA, DX, INCX)
DSCAL
subroutine dstev(JOBZ, N, D, E, Z, LDZ, WORK, INFO)
DSTEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...