294 SUBROUTINE dsygvx( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB,
295 $ VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK,
296 $ LWORK, IWORK, IFAIL, INFO )
303 CHARACTER JOBZ, RANGE, UPLO
304 INTEGER IL, INFO, ITYPE, IU, LDA, LDB, LDZ, LWORK, M, N
305 DOUBLE PRECISION ABSTOL, VL, VU
308 INTEGER IFAIL( * ), IWORK( * )
309 DOUBLE PRECISION A( lda, * ), B( ldb, * ), W( * ), WORK( * ),
317 parameter( one = 1.0d+0 )
320 LOGICAL ALLEIG, INDEIG, LQUERY, UPPER, VALEIG, WANTZ
322 INTEGER LWKMIN, LWKOPT, NB
327 EXTERNAL lsame, ilaenv
339 upper = lsame( uplo,
'U' )
340 wantz = lsame( jobz,
'V' )
341 alleig = lsame( range,
'A' )
342 valeig = lsame( range,
'V' )
343 indeig = lsame( range,
'I' )
344 lquery = ( lwork.EQ.-1 )
347 IF( itype.LT.1 .OR. itype.GT.3 )
THEN 349 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN 351 ELSE IF( .NOT.( alleig .OR. valeig .OR. indeig ) )
THEN 353 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN 355 ELSE IF( n.LT.0 )
THEN 357 ELSE IF( lda.LT.max( 1, n ) )
THEN 359 ELSE IF( ldb.LT.max( 1, n ) )
THEN 363 IF( n.GT.0 .AND. vu.LE.vl )
365 ELSE IF( indeig )
THEN 366 IF( il.LT.1 .OR. il.GT.max( 1, n ) )
THEN 368 ELSE IF( iu.LT.min( n, il ) .OR. iu.GT.n )
THEN 374 IF (ldz.LT.1 .OR. (wantz .AND. ldz.LT.n))
THEN 380 lwkmin = max( 1, 8*n )
381 nb = ilaenv( 1,
'DSYTRD', uplo, n, -1, -1, -1 )
382 lwkopt = max( lwkmin, ( nb + 3 )*n )
385 IF( lwork.LT.lwkmin .AND. .NOT.lquery )
THEN 391 CALL xerbla(
'DSYGVX', -info )
393 ELSE IF( lquery )
THEN 406 CALL dpotrf( uplo, n, b, ldb, info )
414 CALL dsygst( itype, uplo, n, a, lda, b, ldb, info )
415 CALL dsyevx( jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol,
416 $ m, w, z, ldz, work, lwork, iwork, ifail, info )
424 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN 435 CALL dtrsm(
'Left', uplo, trans,
'Non-unit', n, m, one, b,
438 ELSE IF( itype.EQ.3 )
THEN 449 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 dsygst(ITYPE, UPLO, N, A, LDA, B, LDB, INFO)
DSYGST
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dpotrf(UPLO, N, A, LDA, INFO)
DPOTRF
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 dtrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRSM
subroutine dtrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRMM