269 SUBROUTINE dspgvx( ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU,
270 $ IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK,
278 CHARACTER JOBZ, RANGE, UPLO
279 INTEGER IL, INFO, ITYPE, IU, LDZ, M, N
280 DOUBLE PRECISION ABSTOL, VL, VU
283 INTEGER IFAIL( * ), IWORK( * )
284 DOUBLE PRECISION AP( * ), BP( * ), W( * ), WORK( * ),
291 LOGICAL ALLEIG, INDEIG, UPPER, VALEIG, WANTZ
309 upper = lsame( uplo,
'U' )
310 wantz = lsame( jobz,
'V' )
311 alleig = lsame( range,
'A' )
312 valeig = lsame( range,
'V' )
313 indeig = lsame( range,
'I' )
316 IF( itype.LT.1 .OR. itype.GT.3 )
THEN 318 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN 320 ELSE IF( .NOT.( alleig .OR. valeig .OR. indeig ) )
THEN 322 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN 324 ELSE IF( n.LT.0 )
THEN 328 IF( n.GT.0 .AND. vu.LE.vl )
THEN 331 ELSE IF( indeig )
THEN 334 ELSE IF( iu.LT.min( n, il ) .OR. iu.GT.n )
THEN 340 IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN 346 CALL xerbla(
'DSPGVX', -info )
358 CALL dpptrf( uplo, n, bp, info )
366 CALL dspgst( itype, uplo, n, ap, bp, info )
367 CALL dspevx( jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m,
368 $ w, z, ldz, work, iwork, ifail, info )
376 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN 388 CALL dtpsv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
392 ELSE IF( itype.EQ.3 )
THEN 404 CALL dtpmv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
subroutine dtpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPSV
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dspgst(ITYPE, UPLO, N, AP, BP, INFO)
DSPGST
subroutine dtpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPMV
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 dspgvx(ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO)
DSPGVX