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 , 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.EQ.
LQUERY = ( LWORK-1 )
347.LT..OR..GT.
IF( ITYPE1 ITYPE3 ) THEN
349.NOT..OR.
ELSE IF( ( WANTZ LSAME( JOBZ, 'n
' ) ) ) THEN
351.NOT..OR..OR.
ELSE IF( ( ALLEIG VALEIG INDEIG ) ) THEN
353.NOT..OR.
ELSE IF( ( UPPER LSAME( UPLO, 'l
' ) ) ) THEN
355.LT.
ELSE IF( N0 ) THEN
357.LT.
ELSE IF( LDAMAX( 1, N ) ) THEN
359.LT.
ELSE IF( LDBMAX( 1, N ) ) THEN
363.GT..AND..LE.
IF( N0 VUVL )
365 ELSE IF( INDEIG ) THEN
366.LT..OR..GT.
IF( IL1 ILMAX( 1, N ) ) THEN
368.LT..OR..GT.
ELSE IF( IUMIN( N, IL ) IUN ) THEN
374.LT..OR..AND..LT.
IF (LDZ1 (WANTZ LDZN)) 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.LT..AND..NOT.
IF( LWORKLWKMIN 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.EQ..OR..EQ.
IF( ITYPE1 ITYPE2 ) THEN
435 CALL DTRSM( 'left
', UPLO, TRANS, 'non-unit
', N, M, ONE, B,
438.EQ.
ELSE IF( ITYPE3 ) THEN
449 CALL DTRMM( 'left
', UPLO, TRANS, 'non-unit
', N, M, ONE, B,
subroutine xerbla(srname, info)
XERBLA
subroutine dpotrf(uplo, n, a, lda, info)
DPOTRF
subroutine dsygst(itype, uplo, n, a, lda, b, ldb, info)
DSYGST
subroutine dsytrd(uplo, n, a, lda, d, e, tau, work, lwork, info)
DSYTRD
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 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 dtrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRMM
subroutine dtrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRSM