5 * Revision 1.1.1.1 1996/04/01 15:02:38 mclareni
10 SUBROUTINE TSTURM(NM,N,EPS1,D,E,E2,LB,UB,MM,M,W,Z,
11 X IERR,RV1,RV2,RV3,RV4,RV5,RV6)
12 INTEGER I,J,K,M,N,P,Q,R,S,II,IP,JJ,MM,M1,M2,NM,ITS,
14 REAL D(N),E(N),E2(N),W(MM),Z(NM,MM),
15 X RV1(N),RV2(N),RV3(N),RV4(N),RV5(N),RV6(N)
16 REAL U,V,LB,T1,T2,UB,UK,XU,X0,X1,EPS1,EPS2,EPS3,EPS4,
18 #if defined(CERNLIB_CDC)
21 #if !defined(CERNLIB_CDC)
28 IF (I .EQ. 1) GO TO 20
29 IF (ABS(E(I)) .GT. MACHEP * (ABS(D(I)) + ABS(D(I-1))))
43 IF (M .GT. MM) GO TO 980
46 100 IF (R .EQ. M) GO TO 1001
55 IF (Q .EQ. N) GO TO 110
58 110 XU = MIN(D(Q)-(X1+U),XU)
59 X0 = MAX(D(Q)+(X1+U),X0)
60 IF (V .EQ. 0.0) GO TO 140
62 140 X1 = MAX(ABS(XU),ABS(X0)) * MACHEP
63 IF (EPS1 .LE. 0.0) EPS1 = -X1
64 IF (P .NE. Q) GO TO 180
65 IF (T1 .GT. D(P) .OR. D(P) .GE. T2) GO TO 940
83 IF (M1 .GT. M2) GO TO 940
94 IF (XU .GE. RV4(I)) GO TO 260
98 280 IF (X0 .GT. RV5(K)) X0 = RV5(K)
99 300 X1 = (XU + X0) * 0.5
100 IF ((X0 - XU) .LE. (2.0 * MACHEP *
101 X (ABS(XU) + ABS(X0)) + ABS(EPS1))) GO TO 420
105 IF (U .NE. 0.0) GO TO 325
106 V = ABS(E(I)) / MACHEP
109 330 U = D(I) - X1 - V
110 IF (U .LT. 0.0) S = S + 1
112 GO TO (60,80,200,220,360), ISTURM
113 360 IF (S .GE. K) GO TO 400
115 IF (S .GE. M1) GO TO 380
119 IF (RV5(S) .GT. X1) RV5(S) = X1
125 IF (K .GE. M1) GO TO 250
129 500 NORM = NORM + ABS(D(I)) + ABS(E(I))
142 IF (K .EQ. M1) GO TO 520
143 IF (X1 - X0 .GE. EPS2) GROUP = -1
145 IF (X1 .LE. X0) X1 = X0 + EPS3
149 IF (I .EQ. P) GO TO 560
150 IF (ABS(E(I)) .LT. ABS(U)) GO TO 540
156 IF (I .NE. Q) RV3(I-1) = E(I+1)
157 U = V - XU * RV2(I-1)
165 560 U = D(I) - X1 - XU * V
166 IF (I .NE. Q) V = E(I+1)
168 IF (U .EQ. 0.0) U = EPS3
174 RV6(I) = (RV6(I) - U * RV2(I) - V * RV3(I)) / RV1(I)
178 IF (GROUP .EQ. 0) GO TO 700
180 J = R - GROUP - 1 + JJ
183 640 XU = XU + RV6(I) * Z(I,J)
185 660 RV6(I) = RV6(I) - XU * Z(I,J)
189 720 NORM = NORM + ABS(RV6(I))
190 IF (NORM .GE. 1.0) GO TO 840
191 IF (ITS .EQ. 5) GO TO 960
192 IF (NORM .NE. 0.0) GO TO 740
199 760 RV6(I) = RV6(I) * XU
202 IF (RV1(I-1) .NE. E(I)) GO TO 800
205 800 RV6(I) = U - RV4(I) * RV6(I-1)
211 860 U = U + RV6(I)**2
216 900 Z(I,R) = RV6(I) * XU
219 940 IF (Q .LT. N) GO TO 100