296 SUBROUTINE ssygvx( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB,
297 $ VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK,
298 $ LWORK, IWORK, IFAIL, INFO )
306 CHARACTER JOBZ, RANGE, UPLO
307 INTEGER IL, INFO, ITYPE, IU, LDA, LDB, LDZ, LWORK, M, N
311 INTEGER IFAIL( * ), IWORK( * )
312 REAL A( lda, * ), B( ldb, * ), W( * ), WORK( * ),
320 parameter( one = 1.0e+0 )
323 LOGICAL ALLEIG, INDEIG, LQUERY, UPPER, VALEIG, WANTZ
325 INTEGER LWKMIN, LWKOPT, NB
330 EXTERNAL ilaenv, lsame
342 upper = lsame( uplo,
'U' )
343 wantz = lsame( jobz,
'V' )
344 alleig = lsame( range,
'A' )
345 valeig = lsame( range,
'V' )
346 indeig = lsame( range,
'I' )
347 lquery = ( lwork.EQ.-1 )
350 IF( itype.LT.1 .OR. itype.GT.3 )
THEN 352 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN 354 ELSE IF( .NOT.( alleig .OR. valeig .OR. indeig ) )
THEN 356 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN 358 ELSE IF( n.LT.0 )
THEN 360 ELSE IF( lda.LT.max( 1, n ) )
THEN 362 ELSE IF( ldb.LT.max( 1, n ) )
THEN 366 IF( n.GT.0 .AND. vu.LE.vl )
368 ELSE IF( indeig )
THEN 369 IF( il.LT.1 .OR. il.GT.max( 1, n ) )
THEN 371 ELSE IF( iu.LT.min( n, il ) .OR. iu.GT.n )
THEN 377 IF (ldz.LT.1 .OR. (wantz .AND. ldz.LT.n))
THEN 383 lwkmin = max( 1, 8*n )
384 nb = ilaenv( 1,
'SSYTRD', uplo, n, -1, -1, -1 )
385 lwkopt = max( lwkmin, ( nb + 3 )*n )
388 IF( lwork.LT.lwkmin .AND. .NOT.lquery )
THEN 394 CALL xerbla(
'SSYGVX', -info )
396 ELSE IF( lquery )
THEN 409 CALL spotrf( uplo, n, b, ldb, info )
417 CALL ssygst( itype, uplo, n, a, lda, b, ldb, info )
418 CALL ssyevx( jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol,
419 $ m, w, z, ldz, work, lwork, iwork, ifail, info )
427 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN 438 CALL strsm(
'Left', uplo, trans,
'Non-unit', n, m, one, b,
441 ELSE IF( itype.EQ.3 )
THEN 452 CALL strmm(
'Left', uplo, trans,
'Non-unit', n, m, one, b,
subroutine ssyevx(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO)
SSYEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices ...
subroutine strsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRSM
subroutine spotrf(UPLO, N, A, LDA, INFO)
SPOTRF
subroutine strmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRMM
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ssygst(ITYPE, UPLO, N, A, LDA, B, LDB, INFO)
SSYGST
subroutine ssygvx(ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO)
SSYGVX