annotate liboctave/cruft/odepack/prepj.f @ 20595:c1a6c31ac29a

eliminate more simple uses of error_state * ov-classdef.cc: Eliminate simple uses of error_state.
author John W. Eaton <jwe@octave.org>
date Tue, 06 Oct 2015 00:20:02 -0400
parents 446c46af4b42
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
1 SUBROUTINE PREPJ (NEQ, Y, YH, NYH, EWT, FTEM, SAVF, WM, IWM,
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
2 1 F, JAC, IERR)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
3 CLLL. OPTIMIZE
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
4 EXTERNAL F, JAC
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
5 INTEGER NEQ, NYH, IWM
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
6 INTEGER IOWND, IOWNS,
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
7 1 ICF, IERPJ, IERSL, JCUR, JSTART, KFLAG, L, METH, MITER,
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
8 2 MAXORD, MAXCOR, MSBP, MXNCF, N, NQ, NST, NFE, NJE, NQU
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
9 INTEGER I, I1, I2, IER, II, J, J1, JJ, LENP,
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
10 1 MBA, MBAND, MEB1, MEBAND, ML, ML3, MU, NP1
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
11 DOUBLE PRECISION Y, YH, EWT, FTEM, SAVF, WM
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
12 DOUBLE PRECISION ROWNS,
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
13 1 CCMAX, EL0, H, HMIN, HMXI, HU, RC, TN, UROUND
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
14 DOUBLE PRECISION CON, DI, FAC, HL0, R, R0, SRUR, YI, YJ, YJJ,
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
15 1 VNORM
1645
44ed237bdc1e [project @ 1995-12-14 08:32:49 by jwe]
jwe
parents: 1644
diff changeset
16 DIMENSION NEQ(*), Y(*), YH(NYH,*), EWT(*), FTEM(*), SAVF(*),
44ed237bdc1e [project @ 1995-12-14 08:32:49 by jwe]
jwe
parents: 1644
diff changeset
17 1 WM(*), IWM(*)
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
18 COMMON /LS0001/ ROWNS(209),
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
19 2 CCMAX, EL0, H, HMIN, HMXI, HU, RC, TN, UROUND,
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
20 3 IOWND(14), IOWNS(6),
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
21 4 ICF, IERPJ, IERSL, JCUR, JSTART, KFLAG, L, METH, MITER,
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
22 5 MAXORD, MAXCOR, MSBP, MXNCF, N, NQ, NST, NFE, NJE, NQU
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
23 C-----------------------------------------------------------------------
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
24 C PREPJ IS CALLED BY STODE TO COMPUTE AND PROCESS THE MATRIX
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
25 C P = I - H*EL(1)*J , WHERE J IS AN APPROXIMATION TO THE JACOBIAN.
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
26 C HERE J IS COMPUTED BY THE USER-SUPPLIED ROUTINE JAC IF
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
27 C MITER = 1 OR 4, OR BY FINITE DIFFERENCING IF MITER = 2, 3, OR 5.
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
28 C IF MITER = 3, A DIAGONAL APPROXIMATION TO J IS USED.
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
29 C J IS STORED IN WM AND REPLACED BY P. IF MITER .NE. 3, P IS THEN
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
30 C SUBJECTED TO LU DECOMPOSITION IN PREPARATION FOR LATER SOLUTION
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
31 C OF LINEAR SYSTEMS WITH P AS COEFFICIENT MATRIX. THIS IS DONE
4329
d53c33d93440 [project @ 2003-02-18 20:00:48 by jwe]
jwe
parents: 1645
diff changeset
32 C BY DGETRF IF MITER = 1 OR 2, AND BY DGBTRF IF MITER = 4 OR 5.
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
33 C
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
34 C IN ADDITION TO VARIABLES DESCRIBED PREVIOUSLY, COMMUNICATION
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
35 C WITH PREPJ USES THE FOLLOWING..
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
36 C Y = ARRAY CONTAINING PREDICTED VALUES ON ENTRY.
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
37 C FTEM = WORK ARRAY OF LENGTH N (ACOR IN STODE).
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
38 C SAVF = ARRAY CONTAINING F EVALUATED AT PREDICTED Y.
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
39 C WM = REAL WORK SPACE FOR MATRICES. ON OUTPUT IT CONTAINS THE
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
40 C INVERSE DIAGONAL MATRIX IF MITER = 3 AND THE LU DECOMPOSITION
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
41 C OF P IF MITER IS 1, 2 , 4, OR 5.
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
42 C STORAGE OF MATRIX ELEMENTS STARTS AT WM(3).
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
43 C WM ALSO CONTAINS THE FOLLOWING MATRIX-RELATED DATA..
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
44 C WM(1) = SQRT(UROUND), USED IN NUMERICAL JACOBIAN INCREMENTS.
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
45 C WM(2) = H*EL0, SAVED FOR LATER USE IF MITER = 3.
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
46 C IWM = INTEGER WORK SPACE CONTAINING PIVOT INFORMATION, STARTING AT
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
47 C IWM(21), IF MITER IS 1, 2, 4, OR 5. IWM ALSO CONTAINS BAND
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
48 C PARAMETERS ML = IWM(1) AND MU = IWM(2) IF MITER IS 4 OR 5.
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
49 C EL0 = EL(1) (INPUT).
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
50 C IERPJ = OUTPUT ERROR FLAG, = 0 IF NO TROUBLE, .GT. 0 IF
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
51 C P MATRIX FOUND TO BE SINGULAR.
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
52 C JCUR = OUTPUT FLAG = 1 TO INDICATE THAT THE JACOBIAN MATRIX
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
53 C (OR APPROXIMATION) IS NOW CURRENT.
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
54 C THIS ROUTINE ALSO USES THE COMMON VARIABLES EL0, H, TN, UROUND,
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
55 C MITER, N, NFE, AND NJE.
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
56 C-----------------------------------------------------------------------
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
57 NJE = NJE + 1
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
58 IERPJ = 0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
59 JCUR = 1
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
60 HL0 = H*EL0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
61 GO TO (100, 200, 300, 400, 500), MITER
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
62 C IF MITER = 1, CALL JAC AND MULTIPLY BY SCALAR. -----------------------
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
63 100 LENP = N*N
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
64 DO 110 I = 1,LENP
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
65 110 WM(I+2) = 0.0D0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
66 CALL JAC (NEQ, TN, Y, 0, 0, WM(3), N)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
67 CON = -HL0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
68 DO 120 I = 1,LENP
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
69 120 WM(I+2) = WM(I+2)*CON
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
70 GO TO 240
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
71 C IF MITER = 2, MAKE N CALLS TO F TO APPROXIMATE J. --------------------
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
72 200 FAC = VNORM (N, SAVF, EWT)
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
73 R0 = 1000.0D0*DABS(H)*UROUND*DBLE(N)*FAC
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
74 IF (R0 .EQ. 0.0D0) R0 = 1.0D0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
75 SRUR = WM(1)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
76 J1 = 2
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
77 DO 230 J = 1,N
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
78 YJ = Y(J)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
79 R = DMAX1(SRUR*DABS(YJ),R0/EWT(J))
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
80 Y(J) = Y(J) + R
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
81 FAC = -HL0/R
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
82 IERR = 0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
83 CALL F (NEQ, TN, Y, FTEM, IERR)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
84 IF (IERR .LT. 0) RETURN
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
85 DO 220 I = 1,N
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
86 220 WM(I+J1) = (FTEM(I) - SAVF(I))*FAC
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
87 Y(J) = YJ
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
88 J1 = J1 + N
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
89 230 CONTINUE
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
90 NFE = NFE + N
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
91 C ADD IDENTITY MATRIX. -------------------------------------------------
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
92 240 J = 3
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
93 NP1 = N + 1
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
94 DO 250 I = 1,N
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
95 WM(J) = WM(J) + 1.0D0
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
96 250 J = J + NP1
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
97 C DO LU DECOMPOSITION ON P. --------------------------------------------
4329
d53c33d93440 [project @ 2003-02-18 20:00:48 by jwe]
jwe
parents: 1645
diff changeset
98 CALL DGETRF ( N, N, WM(3), N, IWM(21), IER)
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
99 IF (IER .NE. 0) IERPJ = 1
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
100 RETURN
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
101 C IF MITER = 3, CONSTRUCT A DIAGONAL APPROXIMATION TO J AND P. ---------
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
102 300 WM(2) = HL0
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
103 R = EL0*0.1D0
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
104 DO 310 I = 1,N
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
105 310 Y(I) = Y(I) + R*(H*SAVF(I) - YH(I,2))
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
106 IERR = 0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
107 CALL F (NEQ, TN, Y, WM(3), IERR)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
108 IF (IERR .LT. 0) RETURN
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
109 NFE = NFE + 1
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
110 DO 320 I = 1,N
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
111 R0 = H*SAVF(I) - YH(I,2)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
112 DI = 0.1D0*R0 - H*(WM(I+2) - SAVF(I))
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
113 WM(I+2) = 1.0D0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
114 IF (DABS(R0) .LT. UROUND/EWT(I)) GO TO 320
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
115 IF (DABS(DI) .EQ. 0.0D0) GO TO 330
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
116 WM(I+2) = 0.1D0*R0/DI
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
117 320 CONTINUE
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
118 RETURN
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
119 330 IERPJ = 1
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
120 RETURN
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
121 C IF MITER = 4, CALL JAC AND MULTIPLY BY SCALAR. -----------------------
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
122 400 ML = IWM(1)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
123 MU = IWM(2)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
124 ML3 = ML + 3
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
125 MBAND = ML + MU + 1
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
126 MEBAND = MBAND + ML
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
127 LENP = MEBAND*N
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
128 DO 410 I = 1,LENP
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
129 410 WM(I+2) = 0.0D0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
130 CALL JAC (NEQ, TN, Y, ML, MU, WM(ML3), MEBAND)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
131 CON = -HL0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
132 DO 420 I = 1,LENP
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
133 420 WM(I+2) = WM(I+2)*CON
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
134 GO TO 570
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
135 C IF MITER = 5, MAKE MBAND CALLS TO F TO APPROXIMATE J. ----------------
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
136 500 ML = IWM(1)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
137 MU = IWM(2)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
138 MBAND = ML + MU + 1
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
139 MBA = MIN0(MBAND,N)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
140 MEBAND = MBAND + ML
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
141 MEB1 = MEBAND - 1
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
142 SRUR = WM(1)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
143 FAC = VNORM (N, SAVF, EWT)
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
144 R0 = 1000.0D0*DABS(H)*UROUND*DBLE(N)*FAC
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
145 IF (R0 .EQ. 0.0D0) R0 = 1.0D0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
146 DO 560 J = 1,MBA
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
147 DO 530 I = J,N,MBAND
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
148 YI = Y(I)
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
149 R = DMAX1(SRUR*DABS(YI),R0/EWT(I))
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
150 530 Y(I) = Y(I) + R
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
151 IERR = 0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
152 CALL F (NEQ, TN, Y, FTEM, IERR)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
153 IF (IERR .LT. 0) RETURN
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
154 DO 550 JJ = J,N,MBAND
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
155 Y(JJ) = YH(JJ,1)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
156 YJJ = Y(JJ)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
157 R = DMAX1(SRUR*DABS(YJJ),R0/EWT(JJ))
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
158 FAC = -HL0/R
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
159 I1 = MAX0(JJ-MU,1)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
160 I2 = MIN0(JJ+ML,N)
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
161 II = JJ*MEB1 - ML + 2
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
162 DO 540 I = I1,I2
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
163 540 WM(II+I) = (FTEM(I) - SAVF(I))*FAC
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
164 550 CONTINUE
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
165 560 CONTINUE
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
166 NFE = NFE + MBA
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
167 C ADD IDENTITY MATRIX. -------------------------------------------------
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
168 570 II = MBAND + 2
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
169 DO 580 I = 1,N
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
170 WM(II) = WM(II) + 1.0D0
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
171 580 II = II + MEBAND
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
172 C DO LU DECOMPOSITION OF P. --------------------------------------------
4329
d53c33d93440 [project @ 2003-02-18 20:00:48 by jwe]
jwe
parents: 1645
diff changeset
173 CALL DGBTRF ( N, N, ML, MU, WM(3), MEBAND, IWM(21), IER)
1644
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
174 IF (IER .NE. 0) IERPJ = 1
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
175 RETURN
395bb6d6c096 [project @ 1995-12-14 08:32:12 by jwe]
jwe
parents:
diff changeset
176 C----------------------- END OF SUBROUTINE PREPJ -----------------------
19627
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 15271
diff changeset
177 END