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 strsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRSM
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 xerbla(SRNAME, INFO)
XERBLA
subroutine spotrf(UPLO, N, A, LDA, INFO)
SPOTRF
subroutine strmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRMM
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