271 SUBROUTINE sspgvx( 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
286 INTEGER IFAIL( * ), IWORK( * )
287 REAL 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(
'SSPGVX', -info )
361 CALL spptrf( uplo, n, bp, info )
369 CALL sspgst( itype, uplo, n, ap, bp, info )
370 CALL sspevx( 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 stpsv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
395 ELSE IF( itype.EQ.3 )
THEN
407 CALL stpmv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
subroutine stpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
STPMV
subroutine sspgst(ITYPE, UPLO, N, AP, BP, INFO)
SSPGST
subroutine sspgvx(ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO)
SSPGVX
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine stpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
STPSV
subroutine spptrf(UPLO, N, AP, INFO)
SPPTRF
subroutine sspevx(JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO)
SSPEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...