5 SUBROUTINE dnsk(X,Y,YPRIME,NEQ,RES,PSOL,WT,RPAR,IPAR,
6 * savr,delta,
e,wm,iwm,cj,sqrtn,rsqrtn,eplin,epcon,
7 * s,confac,tolnew,muldel,maxit,ires,iersl,iernew)
93 IMPLICIT DOUBLE PRECISION(a-
h,o-z)
94 dimension y(*),yprime(*),wt(*),delta(*),
e(*),savr(*)
98 parameter(lnni=19, lnre=12)
109 iwm(lnni) = iwm(lnni) + 1
113 IF (muldel .EQ. 1)
THEN
115 320 delta(i) = delta(i) * confac
121 340 savr(i) = delta(i)
125 CALL
dslvk(neq, y, x, yprime, savr, delta, wt, wm, iwm,
126 * res, ires, psol, iersl, cj, eplin, sqrtn, rsqrtn, rhok,
128 IF (ires .NE. 0 .OR. iersl .NE. 0) go
to 380
133 y(i) = y(i) - delta(i)
134 e(i) =
e(i) - delta(i)
135 360 yprime(i) = yprime(i) - cj*delta(i)
139 delnrm =
ddwnrm(neq,delta,wt,rpar,ipar)
140 IF (delnrm .LE. tolnew) go
to 370
144 rate = (delnrm/oldnrm)**(1.0d0/m)
145 IF (rate .GT. 0.9d0) go
to 380
146 s = rate/(1.0d0 - rate)
148 IF (s*delnrm .LE. epcon) go
to 370
154 IF (m .GE. maxit) go
to 380
158 iwm(lnre) = iwm(lnre) + 1
159 CALL res(x,y,yprime,cj,delta,ires,rpar,ipar)
160 IF (ires .LT. 0) go
to 380
170 IF (ires .LE. -2 .OR. iersl .LT. 0)
THEN
subroutine dslvk(NEQ, Y, TN, YPRIME, SAVR, X, EWT, WM, IWM, RES, IRES, PSOL, IERSL, CJ, EPLIN, SQRTN, RSQRTN, RHOK, RPAR, IPAR)
subroutine dnsk(X, Y, YPRIME, NEQ, RES, PSOL, WT, RPAR, IPAR, SAVR, DELTA, E, WM, IWM, CJ, SQRTN, RSQRTN, EPLIN, EPCON, S, CONFAC, TOLNEW, MULDEL, MAXIT, IRES, IERSL, IERNEW)
may be zero for pure relative error test tem the relative tolerance must be greater than or equal to
OCTAVE_EXPORT octave_value_list etc The functions then dimension(columns)
double precision function ddwnrm(NEQ, V, RWT, RPAR, IPAR)