100 SUBROUTINE dstech( N, A, B, EIG, TOL, WORK, INFO )
111 DOUBLE PRECISION A( * ), B( * ), EIG( * ), WORK( * )
117 DOUBLE PRECISION ZERO
118 parameter( zero = 0.0d0 )
121 INTEGER BPNT, COUNT, I, ISUB, J, NUML, NUMU, TPNT
122 DOUBLE PRECISION EMIN, EPS, LOWER, MX, TUPPR, UNFLEP, UPPER
125 DOUBLE PRECISION DLAMCH
145 IF( tol.LT.zero )
THEN
152 eps = dlamch(
'Epsilon' )*dlamch(
'Base' )
153 unflep = dlamch(
'Safe minimum' ) / eps
160 mx = max( mx, abs( eig( i ) ) )
162 eps = max( eps*mx, unflep )
172 DO 30 j = 2, n + 1 - i
173 IF( work( j ).LT.emin )
THEN
178 IF( isub.NE.n+1-i )
THEN
179 work( isub ) = work( n+1-i )
193 upper = work( tpnt ) + eps
194 lower = work( bpnt ) - eps
201 tuppr = work( bpnt+1 ) + eps
208 lower = work( bpnt ) - eps
214 CALL dstect( n, a, b, lower, numl )
215 CALL dstect( n, a, b, upper, numu )
217 IF( count.NE.bpnt-tpnt+1 )
THEN
subroutine dstech(n, a, b, eig, tol, work, info)
DSTECH