From 2e3fa34b9fb368bae1a14f46584b58163b3b108a Mon Sep 17 00:00:00 2001 From: Thomas Capricelli Date: Thu, 20 Aug 2009 23:07:16 +0200 Subject: [PATCH] cleaning a little bit the f2c mess for chkder --- unsupported/Eigen/src/NonLinear/chkder.h | 116 +++++++++-------------- 1 file changed, 46 insertions(+), 70 deletions(-) diff --git a/unsupported/Eigen/src/NonLinear/chkder.h b/unsupported/Eigen/src/NonLinear/chkder.h index f7b4693fd..d49ee8df0 100644 --- a/unsupported/Eigen/src/NonLinear/chkder.h +++ b/unsupported/Eigen/src/NonLinear/chkder.h @@ -4,18 +4,17 @@ /* Table of constant values */ -template + template void chkder_template(int m, int n, const Scalar *x, - Scalar *fvec, Scalar *fjac, int ldfjac, Scalar *xp, - Scalar *fvecp, int mode, Scalar *err) + Scalar *fvec, Scalar *fjac, int ldfjac, Scalar *xp, + Scalar *fvecp, int mode, Scalar *err) { /* System generated locals */ - int fjac_dim1, fjac_offset, i__1, i__2; + int fjac_offset; /* Local variables */ int i__, j; - Scalar eps, epsf, temp; - Scalar epslog; + Scalar temp; /* Parameter adjustments */ --err; @@ -23,79 +22,56 @@ void chkder_template(int m, int n, const Scalar *x, --fvec; --xp; --x; - fjac_dim1 = ldfjac; - fjac_offset = 1 + fjac_dim1 * 1; + fjac_offset = 1 + ldfjac; fjac -= fjac_offset; /* Function Body */ - eps = ei_sqrt(epsilon()); + const Scalar eps = ei_sqrt(epsilon()); - if (mode == 2) { - goto L20; + if (mode != 2) { + /* mode = 1. */ + for (j = 1; j <= n; ++j) { + temp = eps * fabs(x[j]); + if (temp == 0.) { + temp = eps; + } + xp[j] = x[j] + temp; + } + return; } -/* mode = 1. */ - - i__1 = n; - for (j = 1; j <= i__1; ++j) { - temp = eps * fabs(x[j]); - if (temp == 0.) { - temp = eps; - } - xp[j] = x[j] + temp; -/* L10: */ + /* mode = 2. */ + const Scalar epsf = chkder_factor * epsilon(); + const Scalar epslog = chkder_log10e * log(eps); + for (i__ = 1; i__ <= m; ++i__) { + err[i__] = 0.; } - /* goto L70; */ - return; -L20: - -/* mode = 2. */ - - epsf = chkder_factor * epsilon(); - epslog = chkder_log10e * log(eps); - i__1 = m; - for (i__ = 1; i__ <= i__1; ++i__) { - err[i__] = 0.; -/* L30: */ + for (j = 1; j <= n; ++j) { + temp = fabs(x[j]); + if (temp == 0.) { + temp = 1.; + } + for (i__ = 1; i__ <= m; ++i__) { + err[i__] += temp * fjac[i__ + j * ldfjac]; + } } - i__1 = n; - for (j = 1; j <= i__1; ++j) { - temp = fabs(x[j]); - if (temp == 0.) { - temp = 1.; - } - i__2 = m; - for (i__ = 1; i__ <= i__2; ++i__) { - err[i__] += temp * fjac[i__ + j * fjac_dim1]; -/* L40: */ - } -/* L50: */ + for (i__ = 1; i__ <= m; ++i__) { + temp = 1.; + if (fvec[i__] != 0. && fvecp[i__] != 0. && fabs(fvecp[i__] - + fvec[i__]) >= epsf * fabs(fvec[i__])) + { + temp = eps * fabs((fvecp[i__] - fvec[i__]) / eps - err[i__]) + / (fabs(fvec[i__]) + + fabs(fvecp[i__])); + } + err[i__] = 1.; + if (temp > epsilon() && temp < eps) { + err[i__] = (chkder_log10e * log(temp) - epslog) / epslog; + } + if (temp >= eps) { + err[i__] = 0.; + } } - i__1 = m; - for (i__ = 1; i__ <= i__1; ++i__) { - temp = 1.; - if (fvec[i__] != 0. && fvecp[i__] != 0. && fabs(fvecp[i__] - - fvec[i__]) >= epsf * fabs(fvec[i__])) - { - temp = eps * fabs((fvecp[i__] - fvec[i__]) / eps - err[i__]) - / (fabs(fvec[i__]) + - fabs(fvecp[i__])); - } - err[i__] = 1.; - if (temp > epsilon() && temp < eps) { - err[i__] = (chkder_log10e * log(temp) - epslog) / epslog; - } - if (temp >= eps) { - err[i__] = 0.; - } -/* L60: */ - } -/* L70: */ - - /* return 0; */ - -/* last card of subroutine chkder. */ - } /* chkder_ */