115 SUBROUTINE dstev( JOBZ, N, D, E, Z, LDZ, WORK, INFO )
126 DOUBLE PRECISION D( * ), E( * ), WORK( * ), Z( ldz, * )
132 DOUBLE PRECISION ZERO, ONE
133 parameter( zero = 0.0d0, one = 1.0d0 )
138 DOUBLE PRECISION BIGNUM, EPS, RMAX, RMIN, SAFMIN, SIGMA, SMLNUM,
143 DOUBLE PRECISION DLAMCH, DLANST
144 EXTERNAL lsame, dlamch, dlanst
156 wantz = lsame( jobz,
'V' )
159 IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN 161 ELSE IF( n.LT.0 )
THEN 163 ELSE IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN 168 CALL xerbla(
'DSTEV ', -info )
185 safmin = dlamch(
'Safe minimum' )
186 eps = dlamch(
'Precision' )
187 smlnum = safmin / eps
188 bignum = one / smlnum
189 rmin = sqrt( smlnum )
190 rmax = sqrt( bignum )
195 tnrm = dlanst(
'M', n, d, e )
196 IF( tnrm.GT.zero .AND. tnrm.LT.rmin )
THEN 199 ELSE IF( tnrm.GT.rmax )
THEN 203 IF( iscale.EQ.1 )
THEN 204 CALL dscal( n, sigma, d, 1 )
205 CALL dscal( n-1, sigma, e( 1 ), 1 )
211 IF( .NOT.wantz )
THEN 212 CALL dsterf( n, d, e, info )
214 CALL dsteqr(
'I', n, d, e, z, ldz, work, info )
219 IF( iscale.EQ.1 )
THEN 225 CALL dscal( imax, one / sigma, d, 1 )
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...
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dsterf(N, D, E, INFO)
DSTERF
subroutine dscal(N, DA, DX, INCX)
DSCAL
subroutine dsteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
DSTEQR