276 SUBROUTINE zhpgvx( ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU,
277 $ IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK,
278 $ IWORK, IFAIL, INFO )
286 CHARACTER JOBZ, RANGE, UPLO
287 INTEGER IL, INFO, ITYPE, IU, LDZ, M, N
288 DOUBLE PRECISION ABSTOL, VL, VU
291 INTEGER IFAIL( * ), IWORK( * )
292 DOUBLE PRECISION RWORK( * ), W( * )
293 COMPLEX*16 AP( * ), BP( * ), WORK( * ), Z( LDZ, * )
299 LOGICAL ALLEIG, INDEIG, UPPER, VALEIG, WANTZ
317 wantz = lsame( jobz,
'V' )
318 upper = lsame( uplo,
'U' )
319 alleig = lsame( range,
'A' )
320 valeig = lsame( range,
'V' )
321 indeig = lsame( range,
'I' )
324 IF( itype.LT.1 .OR. itype.GT.3 )
THEN
326 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN
328 ELSE IF( .NOT.( alleig .OR. valeig .OR. indeig ) )
THEN
330 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN
332 ELSE IF( n.LT.0 )
THEN
336 IF( n.GT.0 .AND. vu.LE.vl )
THEN
339 ELSE IF( indeig )
THEN
342 ELSE IF( iu.LT.min( n, il ) .OR. iu.GT.n )
THEN
348 IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN
354 CALL xerbla(
'ZHPGVX', -info )
365 CALL zpptrf( uplo, n, bp, info )
373 CALL zhpgst( itype, uplo, n, ap, bp, info )
374 CALL zhpevx( jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m,
375 $ w, z, ldz, work, rwork, iwork, ifail, info )
383 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN
395 CALL ztpsv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
399 ELSE IF( itype.EQ.3 )
THEN
411 CALL ztpmv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),