2 $ M, W, Z, LDZ, NZC, ISUPPZ, WORK, LWORK, IWORK,
3 $ LIWORK, DOL, DOU, NEEDIL, NEEDIU,
4 $ INDWLC, PIVMIN, SCALE, WL, WU,
5 $ VSTART, FINISH, MAXCLS,
6 $ NDEPTH, PARITY, ZOFFSET, INFO )
16 INTEGER DOL, DOU, INDWLC, INFO, LDZ, LIWORK, LWORK, M,
17 $ maxcls, n, ndepth, needil, neediu, nzc, parity,
20 DOUBLE PRECISION PIVMIN, SCALE, WL, WU
21 LOGICAL VSTART, FINISH
25 INTEGER ISUPPZ( * ), IWORK( * )
26 DOUBLE PRECISION D( * ), E( * ), W( * ), WORK( * )
27 DOUBLE PRECISION Z( LDZ, * )
205 DOUBLE PRECISION ONE, FOUR, MINRGP
206 PARAMETER ( ONE = 1.0d0,
211 LOGICAL LQUERY, WANTZ, ZQUERY
212 INTEGER IINDBL, IINDW, IINDWK, IINFO, IINSPL, INDERR,
213 $ INDGP, INDGRS, INDSDM, INDWRK, ITMP, J, LIWMIN,
215 DOUBLE PRECISION EPS, RTOL1, RTOL2
219 DOUBLE PRECISION DLAMCH, DLANST
220 EXTERNAL lsame, dlamch, dlanst
226 INTRINSIC dble,
max,
min, sqrt
232 wantz = lsame( jobz,
'V' )
234 lquery = ( ( lwork.EQ.-1 ).OR.( liwork.EQ.-1 ) )
235 zquery = ( nzc.EQ.-1 )
254 eps = dlamch(
'Precision' )
256 IF( (n.EQ.0).OR.(n.EQ.1) )
THEN
277 rtol1 = four*sqrt(eps)
278 rtol2 =
max( sqrt(eps)*5.0d-3, four * eps )
287 $ pivmin, iwork( iinspl ), m,
288 $ dol, dou, needil, neediu, minrgp, rtol1, rtol2,
289 $ w, work( inderr ), work( indgp ), iwork( iindbl ),
290 $ iwork( iindw ), work( indgrs ),
291 $ work( indsdm ), z, ldz,
292 $ isuppz, work( indwrk ), iwork( iindwk ),
294 $ maxcls, ndepth, parity, zoffset, iinfo )
295 IF( iinfo.NE.0 )
THEN
296 info = 200 + abs( iinfo )
307 itmp = iwork( iindbl+j-1 )
308 w( j ) = w( j ) + e( iwork( iinspl+itmp-1 ) )
322 IF( scale.NE.one )
THEN
323 CALL dscal( m, one / scale, w, 1 )
329 IF( dol.NE.1 .OR. dou.NE.m )
THEN