267 SUBROUTINE dspgvx( ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU,
268 $ IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK,
276 CHARACTER JOBZ, RANGE, UPLO
277 INTEGER IL, INFO, ITYPE, IU, LDZ, M, N
278 DOUBLE PRECISION ABSTOL, VL, VU
281 INTEGER IFAIL( * ), IWORK( * )
282 DOUBLE PRECISION AP( * ), BP( * ), W( * ), WORK( * ),
289 LOGICAL ALLEIG, INDEIG, UPPER, VALEIG, WANTZ
308 upper = lsame( uplo,
'U' )
309 wantz = lsame( jobz,
'V' )
310 alleig = lsame( range,
'A' )
311 valeig = lsame( range,
'V' )
312 indeig = lsame( range,
'I' )
315 IF( itype.LT.1 .OR. itype.GT.3 )
THEN
317 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN
319 ELSE IF( .NOT.( alleig .OR. valeig .OR. indeig ) )
THEN
321 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN
323 ELSE IF( n.LT.0 )
THEN
327 IF( n.GT.0 .AND. vu.LE.vl )
THEN
330 ELSE IF( indeig )
THEN
333 ELSE IF( iu.LT.min( n, il ) .OR. iu.GT.n )
THEN
339 IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN
345 CALL xerbla(
'DSPGVX', -info )
357 CALL dpptrf( uplo, n, bp, info )
365 CALL dspgst( itype, uplo, n, ap, bp, info )
366 CALL dspevx( jobz, range, uplo, n, ap, vl, vu, il, iu, abstol,
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 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 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
subroutine dtpsv(uplo, trans, diag, n, ap, x, incx)
DTPSV