1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
C
C
SUBROUTINE DLAEIG(N, NBAND, NL, NR, A, EIGVAL, LDE,
1 EIGVEC, BOUND, ATEMP, D, VTEMP, EPS, TMIN, TMAX)
C
C THIS IS A SPECIALIZED VERSION OF THE SUBROUTINE BNDEIG TAILORED
C SPECIFICALLY FOR USE BY THE LASO PACKAGE.
C
INTEGER N, NBAND, NL, NR, LDE
DOUBLE PRECISION A(NBAND,1), EIGVAL(1),
1 EIGVEC(LDE,1), BOUND(2,1), ATEMP(1), D(1), VTEMP(1),
2 EPS, TMIN, TMAX
C
C LOCAL VARIABLES
C
INTEGER I, M, NVAL
DOUBLE PRECISION ARTOL, ATOL
C
C FUNCTIONS CALLED
C
DOUBLE PRECISION DMAX1
C
C SUBROUTINES CALLED
C
C DLABCM, DLABFC, DLAGER, DCOPY
C
C SET PARAMETERS
C
ATOL = DBLE(FLOAT(N))*EPS*DMAX1(TMAX,-TMIN)
ARTOL = ATOL/DSQRT(EPS)
NVAL = NR - NL + 1
C
C CHECK FOR SPECIAL CASE OF N = 1
C
IF(N .NE. 1) GO TO 30
EIGVAL(1) = A(1,1)
EIGVEC(1,1) = 1.0D0
RETURN
C
C SET UP INITIAL EIGENVALUE BOUNDS
C
30 M = NVAL + 1
DO 50 I = 2, M
BOUND(1,I) = TMIN
BOUND(2,I) = TMAX
50 CONTINUE
BOUND(2,1) = TMAX
BOUND(1,NVAL + 2) = TMIN
IF(NL .EQ. 1) BOUND(2,1) = TMIN
IF(NR .EQ. N) BOUND(1,NVAL + 2) = TMAX
C
60 CALL DLABCM(N, NBAND, NL, NR, A, EIGVAL, LDE,
1 EIGVEC, ATOL, ARTOL, BOUND, ATEMP, D, VTEMP)
RETURN
END
|