296 SUBROUTINE dsygvx( 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
308 DOUBLE PRECISION ABSTOL, VL, VU
311 INTEGER IFAIL( * ), IWORK( * )
312 DOUBLE PRECISION A( lda, * ), B( ldb, * ), W( * ), WORK( * ),
320 parameter ( one = 1.0d+0 )
323 LOGICAL ALLEIG, INDEIG, LQUERY, UPPER, VALEIG, WANTZ
325 INTEGER LWKMIN, LWKOPT, NB
330 EXTERNAL lsame, ilaenv
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,
'DSYTRD', uplo, n, -1, -1, -1 )
385 lwkopt = max( lwkmin, ( nb + 3 )*n )
388 IF( lwork.LT.lwkmin .AND. .NOT.lquery )
THEN
394 CALL xerbla(
'DSYGVX', -info )
396 ELSE IF( lquery )
THEN
409 CALL dpotrf( uplo, n, b, ldb, info )
417 CALL dsygst( itype, uplo, n, a, lda, b, ldb, info )
418 CALL dsyevx( 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 dtrsm(
'Left', uplo, trans,
'Non-unit', n, m, one, b,
441 ELSE IF( itype.EQ.3 )
THEN
452 CALL dtrmm(
'Left', uplo, trans,
'Non-unit', n, m, one, b,
subroutine dtrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRSM
subroutine dpotrf(UPLO, N, A, LDA, INFO)
DPOTRF
subroutine dtrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRMM
subroutine xerbla(SRNAME, INFO)
XERBLA
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 dsygvx(ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO)
DSYGVX
subroutine dsygst(ITYPE, UPLO, N, A, LDA, B, LDB, INFO)
DSYGST