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
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
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real b(3) integer i
logical function lsame(CA, CB)
LSAME
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
integer function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)
subroutine dpotrf(UPLO, N, A, LDA, INFO)
DPOTRF
subroutine dtrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRMM