276 SUBROUTINE chpgvx( 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
291 INTEGER IFAIL( * ), IWORK( * )
292 REAL RWORK( * ), W( * )
293 COMPLEX 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(
'CHPGVX', -info )
365 CALL cpptrf( uplo, n, bp, info )
373 CALL chpgst( itype, uplo, n, ap, bp, info )
374 CALL chpevx( 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 ctpsv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
399 ELSE IF( itype.EQ.3 )
THEN
411 CALL ctpmv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
subroutine ctpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
CTPMV
subroutine chpgst(ITYPE, UPLO, N, AP, BP, INFO)
CHPGST
subroutine cpptrf(UPLO, N, AP, INFO)
CPPTRF
subroutine chpgvx(ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO)
CHPGVX
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ctpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
CTPSV
subroutine chpevx(JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO)
CHPEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...