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 xerbla(srname, info)
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 matrice...
subroutine dspgst(itype, uplo, n, ap, bp, info)
DSPGST
subroutine dspgvx(itype, jobz, range, uplo, n, ap, bp, vl, vu, il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info)
DSPGVX
subroutine dpptrf(uplo, n, ap, info)
DPPTRF
subroutine dtpmv(uplo, trans, diag, n, ap, x, incx)
DTPMV
subroutine dtpsv(uplo, trans, diag, n, ap, x, incx)
DTPSV