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 dspgst(ITYPE, UPLO, N, AP, BP, INFO)
DSPGST
subroutine xerbla(SRNAME, INFO)
XERBLA
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
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 dtpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPSV
subroutine dtpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPMV