📄 cg.c
字号:
goto L250;
}
/*< Q = C0 >*/
q = c0;
/*< 220 ND = ND + 1 >*/
L220:
++nd;
/*< IF ( ND .GT. 25 ) GOTO 610 >*/
if (nd > 25) {
goto L610;
}
/*< Q = A3*Q >*/
q = a3 * q;
/*< P = FV(Q,X,H,N,VALUE) >*/
p = fv_(&q, &x[1], &h__[h_offset], n, value, userdata);
/*< CALL INS(Q,P,A,B,C,FA,FB,FC,J,Y,Z) >*/
ins_(&q, &p, &a, &b, &c__, &fa, &fb, &fc, &j, y, z__);
/*< IF ( P-F .LT. W*Q ) GOTO 220 >*/
if (p - f < w * q) {
goto L220;
}
/*< GOTO 250 >*/
goto L250;
/*< 230 IF ( C0 .LE. A5*C1 ) GOTO 250 >*/
L230:
if (c0 <= a5 * c1) {
goto L250;
}
/*< R = DLOG(C0/C1) >*/
r__ = log(c0 / c1);
/*< S = IDINT(R*L3+.999) >*/
s = (doublereal) ((integer) (r__ * l3 + (float).999));
/*< R = 1.001*DEXP(R/S) >*/
r__ = exp(r__ / s) * (float)1.001;
/*< Q = A >*/
q = a;
/*< 240 Q = Q*R >*/
L240:
q *= r__;
/*< IF ( Q .GT. C0 ) GOTO 250 >*/
if (q > c0) {
goto L250;
}
/*< ND = ND + 1 >*/
++nd;
/*< P = FV(Q,X,H,N,VALUE) >*/
p = fv_(&q, &x[1], &h__[h_offset], n, value, userdata);
/*< CALL INS(Q,P,A,B,C,FA,FB,FC,J,Y,Z) >*/
ins_(&q, &p, &a, &b, &c__, &fa, &fb, &fc, &j, y, z__);
/*< IF ( P-F .LT. W*Q ) GOTO 240 >*/
if (p - f < w * q) {
goto L240;
}
/*< 250 IF ( IQ .EQ. 1 ) GOTO 320 >*/
L250:
if (iq == 1) {
goto L320;
}
/*< 260 IF ( B .EQ. 0. ) GOTO 280 >*/
L260:
if (b == (float)0.) {
goto L280;
}
/*< IF ( C .EQ. 0. ) GOTO 270 >*/
if (c__ == (float)0.) {
goto L270;
}
/*< V = C - A >*/
v = c__ - a;
/*< W = A - B >*/
w = a - b;
/*< R = 1./V >*/
r__ = (float)1. / v;
/*< S = 1./W >*/
s = (float)1. / w;
/*< P = FC - FA >*/
p = fc - fa;
/*< Q = FB - FA >*/
q = fb - fa;
/*< E = P*R + Q*S >*/
*e = p * r__ + q * s;
/*< IF ( DSIGN(E,C-B) .NE. E ) GOTO 320 >*/
d__1 = c__ - b;
if (d_sign(e, &d__1) != *e) {
goto L320;
}
/*< IF ( E .EQ. 0. ) GOTO 320 >*/
if (*e == (float)0.) {
goto L320;
}
/*< Q = (P*R)*W - (Q*S)*V >*/
q = p * r__ * w - q * s * v;
/*< Q = A - .5*Q/E >*/
q = a - q * (float).5 / *e;
/*< P = FV(Q,X,H,N,VALUE) >*/
p = fv_(&q, &x[1], &h__[h_offset], n, value, userdata);
/*< CALL INS(Q,P,A,B,C,FA,FB,FC,J,Y,Z) >*/
ins_(&q, &p, &a, &b, &c__, &fa, &fb, &fc, &j, y, z__);
/*< GOTO 320 >*/
goto L320;
/*< 270 R = 1./A >*/
L270:
r__ = (float)1. / a;
/*< S = 1./B >*/
s = (float)1. / b;
/*< P = R*(FA-F) - D >*/
p = r__ * (fa - f) - d__;
/*< Q = S*(FB-F) - D >*/
q = s * (fb - f) - d__;
/*< E = A - B >*/
*e = a - b;
/*< V = (R*P-S*Q)/E >*/
v = (r__ * p - s * q) / *e;
/*< W = (A*Q*S-B*P*R)/E >*/
w = (a * q * s - b * p * r__) / *e;
/*< V = W*W-3.*V*D >*/
v = w * w - v * (float)3. * d__;
/*< IF ( V .LT. 0. ) V = 0. >*/
if (v < (float)0.) {
v = (float)0.;
}
/*< V = DSQRT(V) >*/
v = sqrt(v);
/*< IF ( W+V .EQ. 0. ) GOTO 320 >*/
if (w + v == (float)0.) {
goto L320;
}
/*< Q = -D/(W+V) >*/
q = -d__ / (w + v);
/*< IF ( Q .LE. 0. ) GOTO 320 >*/
if (q <= (float)0.) {
goto L320;
}
/*< P = FV(Q,X,H,N,VALUE) >*/
p = fv_(&q, &x[1], &h__[h_offset], n, value, userdata);
/*< CALL INS(Q,P,A,B,C,FA,FB,FC,J,Y,Z) >*/
ins_(&q, &p, &a, &b, &c__, &fa, &fb, &fc, &j, y, z__);
/*< GOTO 320 >*/
goto L320;
/*< 280 IF ( IQ .EQ. 1 ) GOTO 320 >*/
L280:
if (iq == 1) {
goto L320;
}
/*< Q = (D+(F-FA)/A)/A >*/
q = (d__ + (f - fa) / a) / a;
/*< IF ( Q .GE. 0. ) GOTO 320 >*/
if (q >= (float)0.) {
goto L320;
}
/*< Q = .5*D/Q >*/
q = d__ * (float).5 / q;
/*< P = FV(Q,X,H,N,VALUE) >*/
p = fv_(&q, &x[1], &h__[h_offset], n, value, userdata);
/*< CALL INS(Q,P,A,B,C,FA,FB,FC,J,Y,Z) >*/
ins_(&q, &p, &a, &b, &c__, &fa, &fb, &fc, &j, y, z__);
/*< GOTO 320 >*/
goto L320;
/*< 290 IF ( F0-F .GT. V*C0 ) GOTO 300 >*/
L290:
if (f0 - f > v * c0) {
goto L300;
}
/*< IF ( F0-F .GT. W*C0 ) GOTO 320 >*/
if (f0 - f > w * c0) {
goto L320;
}
/*< 300 Q = A >*/
L300:
q = a;
/*< 310 ND = ND + 1 >*/
L310:
++nd;
/*< IF ( ND .GT. 25 ) GOTO 610 >*/
if (nd > 25) {
goto L610;
}
/*< Q = A3*Q >*/
q = a3 * q;
/*< P = FV(Q,X,H,N,VALUE) >*/
p = fv_(&q, &x[1], &h__[h_offset], n, value, userdata);
/*< CALL INS(Q,P,A,B,C,FA,FB,FC,J,Y,Z) >*/
ins_(&q, &p, &a, &b, &c__, &fa, &fb, &fc, &j, y, z__);
/*< IF ( P-F .LT. W*Q ) GOTO 310 >*/
if (p - f < w * q) {
goto L310;
}
/*< GOTO 250 >*/
goto L250;
/*< 320 DA = FD(A,X,H,N,GRAD) >*/
L320:
da = fd_(&a, &x[1], &h__[h_offset], n, grad, userdata);
/*< IF ( DA .GT. A6*G ) GOTO 410 >*/
if (da > a6 * g) {
goto L410;
}
/*< IF ( DA .GE. 0. ) GOTO 560 >*/
if (da >= (float)0.) {
goto L560;
}
/*< R = A >*/
r__ = a;
/*< Q = 0. >*/
q = (float)0.;
/*< DO 330 I = 1,J >*/
i__1 = j;
for (i__ = 1; i__ <= i__1; ++i__) {
/*< IF ( Y(I) .GT. A ) GOTO 370 >*/
if (y[i__ - 1] > a) {
goto L370;
}
/*< IF ( Y(I) .LE. Q ) GOTO 330 >*/
if (y[i__ - 1] <= q) {
goto L330;
}
/*< IF ( Y(I) .EQ. A ) GOTO 330 >*/
if (y[i__ - 1] == a) {
goto L330;
}
/*< Q = Y(I) >*/
q = y[i__ - 1];
/*< 330 CONTINUE >*/
L330:
;
}
/*< IF ( A .LE. A8*Q ) GOTO 560 >*/
if (a <= a8 * q) {
goto L560;
}
/*< Q = A >*/
q = a;
/*< 340 ND = ND + 1 >*/
L340:
++nd;
/*< IF ( ND .GT. 25 ) GOTO 610 >*/
if (nd > 25) {
goto L610;
}
/*< Q = A3*Q >*/
q = a3 * q;
/*< P = FV(Q,X,H,N,VALUE) >*/
p = fv_(&q, &x[1], &h__[h_offset], n, value, userdata);
/*< F1 = FA >*/
f1 = fa;
/*< CALL INS(Q,P,A,B,C,FA,FB,FC,J,Y,Z) >*/
ins_(&q, &p, &a, &b, &c__, &fa, &fb, &fc, &j, y, z__);
/*< IF ( P .LT. F1 ) GOTO 340 >*/
if (p < f1) {
goto L340;
}
/*< IF ( A .GT. R ) GOTO 360 >*/
if (a > r__) {
goto L360;
}
/*< DO 350 I = 1,N >*/
i__1 = *n;
for (i__ = 1; i__ <= i__1; ++i__) {
/*< 350 H(I,2) = X(I) + A*H(I,1) >*/
/* L350: */
h__[i__ + (h_dim1 << 1)] = x[i__] + a * h__[i__ + h_dim1];
}
/*< GOTO 560 >*/
goto L560;
/*< 360 DA = FD(A,X,H,N,GRAD) >*/
L360:
da = fd_(&a, &x[1], &h__[h_offset], n, grad, userdata);
/*< IF ( DA .GT. A6*G ) GOTO 410 >*/
if (da > a6 * g) {
goto L410;
}
/*< GOTO 560 >*/
goto L560;
/*< 370 Q = Y(I) >*/
L370:
q = y[i__ - 1];
/*< DO 380 K = I,J >*/
i__1 = j;
for (k = i__; k <= i__1; ++k) {
/*< IF ( Y(K) .LE. A ) GOTO 380 >*/
if (y[k - 1] <= a) {
goto L380;
}
/*< IF ( Y(K) .LT. Q ) Q = Y(K) >*/
if (y[k - 1] < q) {
q = y[k - 1];
}
/*< 380 CONTINUE >*/
L380:
;
}
/*< IF ( Q .LE. A5*A ) GOTO 560 >*/
if (q <= a5 * a) {
goto L560;
}
/*< F0 = DLOG(Q/A) >*/
f0 = log(q / a);
/*< S = IDINT(F0*L3+.999) >*/
s = (doublereal) ((integer) (f0 * l3 + (float).999));
/*< F0 = 1.001*DEXP(F0/S) >*/
f0 = exp(f0 / s) * (float)1.001;
/*< S = A >*/
s = a;
/*< 390 S = S*F0 >*/
L390:
s *= f0;
/*< IF ( S .GE. Q ) GOTO 320 >*/
if (s >= q) {
goto L320;
}
/*< P = FV(S,X,H,N,VALUE) >*/
p = fv_(&s, &x[1], &h__[h_offset], n, value, userdata);
/*< F1 = FA >*/
f1 = fa;
/*< CALL INS(S,P,A,B,C,FA,FB,FC,J,Y,Z) >*/
ins_(&s, &p, &a, &b, &c__, &fa, &fb, &fc, &j, y, z__);
/*< IF ( P .LT. F1 ) GOTO 390 >*/
if (p < f1) {
goto L390;
}
/*< IF ( A .GT. R ) GOTO 320 >*/
if (a > r__) {
goto L320;
}
/*< DO 400 I = 1,N >*/
i__1 = *n;
for (i__ = 1; i__ <= i__1; ++i__) {
/*< 400 H(I,2) = X(I) + A*H(I,1) >*/
/* L400: */
h__[i__ + (h_dim1 << 1)] = x[i__] + a * h__[i__ + h_dim1];
}
/*< GOTO 560 >*/
goto L560;
/*< 410 B = 0. >*/
L410:
b = (float)0.;
/*< K = 1 >*/
k = 1;
/*< I = K >*/
i__ = k;
/*< 420 I = I + 1 >*/
L420:
++i__;
/*< IF ( I .GT. J ) GOTO 430 >*/
if (i__ > j) {
goto L430;
}
/*< IF ( Y(I) .GE. A ) GOTO 420 >*/
if (y[i__ - 1] >= a) {
goto L420;
}
/*< IF ( Y(I) .LT. B ) GOTO 420 >*/
if (y[i__ - 1] < b) {
goto L420;
}
/*< B = Y(I) >*/
b = y[i__ - 1];
/*< K = I >*/
k = i__;
/*< GOTO 420 >*/
goto L420;
/*< 430 FB = Z(K) >*/
L430:
fb = z__[k - 1];
/*< DB = D >*/
db = d__;
/*< IF ( B .NE. 0. ) DB = FD(B,X,H,N,GRAD) >*/
if (b != (float)0.) {
db = fd_(&b, &x[1], &h__[h_offset], n, grad, userdata);
}
/*< 440 W = 2.*DABS(B-A) >*/
/* L440: */
w = (d__1 = b - a, abs(d__1)) * (float)2.;
/*< CALL CUB(C,A,B,FA,FB,DA,DB) >*/
cub_(&c__, &a, &b, &fa, &fb, &da, &db);
/*< NC = 1 >*/
nc = 1;
/*< GOTO 480 >*/
goto L480;
/*< 450 W = .5*W >*/
L450:
w *= (float).5;
/*< IF ( W .LT. DABS(C0-C) ) GOTO 550 >*/
if (w < (d__1 = c0 - c__, abs(d__1))) {
goto L550;
}
/*< IF ( C0 .LT. C ) GOTO 460 >*/
if (c0 < c__) {
goto L460;
}
/*< IF ( D0 .GE. D ) GOTO 470 >*/
if (d0 >= d__) {
goto L470;
}
/*< GOTO 550 >*/
goto L550;
/*< 460 IF ( D0 .GT. D ) GOTO 550 >*/
L460:
if (d0 > d__) {
goto L550;
}
/*< 470 CALL CUB(C,C,C0,F,F0,D,D0) >*/
L470:
cub_(&c__, &c__, &c0, &f, &f0, &d__, &d0);
/*< NC = NC + 1 >*/
++nc;
/*< IF ( NC .GT. 30 ) GOTO 600 >*/
if (nc > 30) {
goto L600;
}
/*< 480 R = DMAX1(A,B) >*/
L480:
r__ = max(a,b);
/*< S = DMIN1(A,B) >*/
s = min(a,b);
/*< IF ( C .GT. R ) GOTO 490 >*/
if (c__ > r__) {
goto L490;
}
/*< IF ( C .GT. S ) GOTO 500 >*/
if (c__ > s) {
goto L500;
}
/*< C = S + (S-C) >*/
c__ = s + (s - c__);
/*< S = .5*(A+B) >*/
s = (a + b) * (float).5;
/*< IF ( C .GT. S ) C = S >*/
if (c__ > s) {
c__ = s;
}
/*< GOTO 500 >*/
goto L500;
/*< 490 C = R - (C-R) >*/
L490:
c__ = r__ - (c__ - r__);
/*< S = .5*(A+B) >*/
s = (a + b) * (float).5;
/*< IF ( C .LT. S ) C = S >*/
if (c__ < s) {
c__ = s;
}
/*< 500 C0 = A >*/
L500:
c0 = a;
/*< F0 = FA >*/
f0 = fa;
/*< D0 = DA >*/
d0 = da;
/*< CALL FVD(F,D,C,X,H,N,BOTH) >*/
fvd_(&f, &d__, &c__, &x[1], &h__[h_offset], n, both, userdata);
/*< IF ( F .LT. FA ) GOTO 510 >*/
if (f < fa) {
goto L510;
}
/*< B = C >*/
b = c__;
/*< FB = F >*/
fb = f;
/*< DB = D >*/
db = d__;
/*< GOTO 450 >*/
goto L450;
/*< 510 IF ( C .LT. A ) GOTO 540 >*/
L510:
if (c__ < a) {
goto L540;
}
/*< IF ( D .LT. 0. ) GOTO 530 >*/
if (d__ < (float)0.) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -