289 SUBROUTINE dsygvx( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB,
290 $ vl, vu, il, iu, abstol, m, w, z, ldz, work,
291 $ lwork, iwork, ifail, info )
299 CHARACTER JOBZ, RANGE, UPLO
300 INTEGER IL, INFO, ITYPE, IU, LDA, LDB, LDZ, LWORK, M, N
301 DOUBLE PRECISION ABSTOL, VL, VU
304 INTEGER IFAIL( * ), IWORK( * )
305 DOUBLE PRECISION A( lda, * ), B( ldb, * ), W( * ), WORK( * ),
313 parameter( one = 1.0d+0 )
316 LOGICAL ALLEIG, INDEIG, LQUERY, UPPER, VALEIG, WANTZ
318 INTEGER LWKMIN, LWKOPT, NB
323 EXTERNAL lsame, ilaenv
335 upper = lsame( uplo,
'U' )
336 wantz = lsame( jobz,
'V' )
337 alleig = lsame( range,
'A' )
338 valeig = lsame( range,
'V' )
339 indeig = lsame( range,
'I' )
340 lquery = ( lwork.EQ.-1 )
343 IF( itype.LT.1 .OR. itype.GT.3 )
THEN
345 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN
347 ELSE IF( .NOT.( alleig .OR. valeig .OR. indeig ) )
THEN
349 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN
351 ELSE IF( n.LT.0 )
THEN
353 ELSE IF( lda.LT.max( 1, n ) )
THEN
355 ELSE IF( ldb.LT.max( 1, n ) )
THEN
359 IF( n.GT.0 .AND. vu.LE.vl )
361 ELSE IF( indeig )
THEN
362 IF( il.LT.1 .OR. il.GT.max( 1, n ) )
THEN
364 ELSE IF( iu.LT.min( n, il ) .OR. iu.GT.n )
THEN
370 IF (ldz.LT.1 .OR. (wantz .AND. ldz.LT.n))
THEN
376 lwkmin = max( 1, 8*n )
377 nb = ilaenv( 1,
'DSYTRD', uplo, n, -1, -1, -1 )
378 lwkopt = max( lwkmin, ( nb + 3 )*n )
381 IF( lwork.LT.lwkmin .AND. .NOT.lquery )
THEN
387 CALL xerbla(
'DSYGVX', -info )
389 ELSE IF( lquery )
THEN
402 CALL dpotrf( uplo, n, b, ldb, info )
410 CALL dsygst( itype, uplo, n, a, lda, b, ldb, info )
411 CALL dsyevx( jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol,
412 $ m, w, z, ldz, work, lwork, iwork, ifail, info )
420 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN
431 CALL dtrsm(
'Left', uplo, trans,
'Non-unit', n, m, one, b,
434 ELSE IF( itype.EQ.3 )
THEN
445 CALL dtrmm(
'Left', uplo, trans,
'Non-unit', n, m, one, b,
subroutine dsyevx(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO)
DSYEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices ...
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dtrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRSM
subroutine dsygvx(ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO)
DSYGST
subroutine dsygst(ITYPE, UPLO, N, A, LDA, B, LDB, INFO)
DSYGST
subroutine dpotrf(UPLO, N, A, LDA, INFO)
DPOTRF
subroutine dtrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRMM