267 SUBROUTINE chpgvx( ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU,
268 $ il, iu, abstol, m, w, z, ldz, work, rwork,
269 $ iwork, ifail, info )
277 CHARACTER JOBZ, RANGE, UPLO
278 INTEGER IL, INFO, ITYPE, IU, LDZ, M, N
282 INTEGER IFAIL( * ), IWORK( * )
283 REAL RWORK( * ), W( * )
284 COMPLEX AP( * ), BP( * ), WORK( * ), Z( ldz, * )
290 LOGICAL ALLEIG, INDEIG, UPPER, VALEIG, WANTZ
308 wantz = lsame( jobz,
'V' )
309 upper = lsame( uplo,
'U' )
310 alleig = lsame( range,
'A' )
311 valeig = lsame( range,
'V' )
312 indeig = lsame( range,
'I' )
315 IF( itype.LT.1 .OR. itype.GT.3 )
THEN
317 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN
319 ELSE IF( .NOT.( alleig .OR. valeig .OR. indeig ) )
THEN
321 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN
323 ELSE IF( n.LT.0 )
THEN
327 IF( n.GT.0 .AND. vu.LE.vl )
THEN
330 ELSE IF( indeig )
THEN
333 ELSE IF( iu.LT.min( n, il ) .OR. iu.GT.n )
THEN
339 IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN
345 CALL
xerbla(
'CHPGVX', -info )
356 CALL
cpptrf( uplo, n, bp, info )
364 CALL
chpgst( itype, uplo, n, ap, bp, info )
365 CALL
chpevx( jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m,
366 $ w, z, ldz, work, rwork, iwork, ifail, info )
374 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN
386 CALL
ctpsv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
390 ELSE IF( itype.EQ.3 )
THEN
402 CALL
ctpmv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
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)
CHPGST
subroutine xerbla(SRNAME, INFO)
XERBLA
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...
subroutine cpptrf(UPLO, N, AP, INFO)
CPPTRF
subroutine chpgst(ITYPE, UPLO, N, AP, BP, INFO)
CHPGST
subroutine ctpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
CTPSV