271 SUBROUTINE dspgvx( ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU,
272 $ IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK,
281 CHARACTER JOBZ, RANGE, UPLO
282 INTEGER IL, INFO, ITYPE, IU, LDZ, M, N
283 DOUBLE PRECISION ABSTOL, VL, VU
286 INTEGER IFAIL( * ), IWORK( * )
287 DOUBLE PRECISION AP( * ), BP( * ), W( * ), WORK( * ),
294 LOGICAL ALLEIG, INDEIG, UPPER, VALEIG, WANTZ
312 upper = lsame( uplo,
'U' )
313 wantz = lsame( jobz,
'V' )
314 alleig = lsame( range,
'A' )
315 valeig = lsame( range,
'V' )
316 indeig = lsame( range,
'I' )
319 IF( itype.LT.1 .OR. itype.GT.3 )
THEN 321 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN 323 ELSE IF( .NOT.( alleig .OR. valeig .OR. indeig ) )
THEN 325 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN 327 ELSE IF( n.LT.0 )
THEN 331 IF( n.GT.0 .AND. vu.LE.vl )
THEN 334 ELSE IF( indeig )
THEN 337 ELSE IF( iu.LT.min( n, il ) .OR. iu.GT.n )
THEN 343 IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN 349 CALL xerbla(
'DSPGVX', -info )
361 CALL dpptrf( uplo, n, bp, info )
369 CALL dspgst( itype, uplo, n, ap, bp, info )
370 CALL dspevx( jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m,
371 $ w, z, ldz, work, iwork, ifail, info )
379 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN 391 CALL dtpsv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
395 ELSE IF( itype.EQ.3 )
THEN 407 CALL dtpmv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
subroutine dspevx(JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO)
DSPEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...
subroutine dpptrf(UPLO, N, AP, INFO)
DPPTRF
subroutine dspgst(ITYPE, UPLO, N, AP, BP, INFO)
DSPGST
subroutine dtpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPSV
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dspgvx(ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO)
DSPGVX
subroutine dtpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPMV