262 SUBROUTINE dspgvx( ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU,
263 $ il, iu, abstol, m, w, z, ldz, work, iwork,
272 CHARACTER JOBZ, RANGE, UPLO
273 INTEGER IL, INFO, ITYPE, IU, LDZ, M, N
274 DOUBLE PRECISION ABSTOL, VL, VU
277 INTEGER IFAIL( * ), IWORK( * )
278 DOUBLE PRECISION AP( * ), BP( * ), W( * ), WORK( * ),
285 LOGICAL ALLEIG, INDEIG, UPPER, VALEIG, WANTZ
303 upper = lsame( uplo,
'U' )
304 wantz = lsame( jobz,
'V' )
305 alleig = lsame( range,
'A' )
306 valeig = lsame( range,
'V' )
307 indeig = lsame( range,
'I' )
310 IF( itype.LT.1 .OR. itype.GT.3 )
THEN
312 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN
314 ELSE IF( .NOT.( alleig .OR. valeig .OR. indeig ) )
THEN
316 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN
318 ELSE IF( n.LT.0 )
THEN
322 IF( n.GT.0 .AND. vu.LE.vl )
THEN
325 ELSE IF( indeig )
THEN
328 ELSE IF( iu.LT.min( n, il ) .OR. iu.GT.n )
THEN
334 IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN
340 CALL xerbla(
'DSPGVX', -info )
352 CALL dpptrf( uplo, n, bp, info )
360 CALL dspgst( itype, uplo, n, ap, bp, info )
361 CALL dspevx( jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m,
362 $ w, z, ldz, work, iwork, ifail, info )
370 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN
382 CALL dtpsv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
386 ELSE IF( itype.EQ.3 )
THEN
398 CALL dtpmv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dtpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPSV
subroutine dtpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPMV
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)
DSPGST
subroutine dspgst(ITYPE, UPLO, N, AP, BP, INFO)
DSPGST
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...