274 SUBROUTINE chpgvx( ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU,
275 $ IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK,
276 $ IWORK, IFAIL, INFO )
283 CHARACTER JOBZ, RANGE, UPLO
284 INTEGER IL, INFO, ITYPE, IU, LDZ, M, N
288 INTEGER IFAIL( * ), IWORK( * )
289 REAL RWORK( * ), W( * )
290 COMPLEX AP( * ), BP( * ), WORK( * ), Z( ldz, * )
296 LOGICAL ALLEIG, INDEIG, UPPER, VALEIG, WANTZ
314 wantz = lsame( jobz,
'V' )
315 upper = lsame( uplo,
'U' )
316 alleig = lsame( range,
'A' )
317 valeig = lsame( range,
'V' )
318 indeig = lsame( range,
'I' )
321 IF( itype.LT.1 .OR. itype.GT.3 )
THEN 323 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN 325 ELSE IF( .NOT.( alleig .OR. valeig .OR. indeig ) )
THEN 327 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN 329 ELSE IF( n.LT.0 )
THEN 333 IF( n.GT.0 .AND. vu.LE.vl )
THEN 336 ELSE IF( indeig )
THEN 339 ELSE IF( iu.LT.min( n, il ) .OR. iu.GT.n )
THEN 345 IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN 351 CALL xerbla(
'CHPGVX', -info )
362 CALL cpptrf( uplo, n, bp, info )
370 CALL chpgst( itype, uplo, n, ap, bp, info )
371 CALL chpevx( jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m,
372 $ w, z, ldz, work, rwork, iwork, ifail, info )
380 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN 392 CALL ctpsv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
396 ELSE IF( itype.EQ.3 )
THEN 408 CALL ctpmv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
subroutine ctpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
CTPSV
subroutine ctpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
CTPMV
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 cpptrf(UPLO, N, AP, INFO)
CPPTRF
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine chpgst(ITYPE, UPLO, N, AP, BP, INFO)
CHPGST
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...