aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/src
diff options
context:
space:
mode:
Diffstat (limited to 'unsupported/Eigen/src')
-rw-r--r--unsupported/Eigen/src/NonLinear/lmder.h15
-rw-r--r--unsupported/Eigen/src/NonLinear/lmder1.h8
2 files changed, 13 insertions, 10 deletions
diff --git a/unsupported/Eigen/src/NonLinear/lmder.h b/unsupported/Eigen/src/NonLinear/lmder.h
index 66294e98b..330b7047f 100644
--- a/unsupported/Eigen/src/NonLinear/lmder.h
+++ b/unsupported/Eigen/src/NonLinear/lmder.h
@@ -1,6 +1,7 @@
-template<typename Functor, typename Scalar>
+template<typename FunctorType, typename Scalar>
int ei_lmder(
+ const FunctorType &Functor,
Matrix< Scalar, Dynamic, 1 > &x,
Matrix< Scalar, Dynamic, 1 > &fvec,
int &nfev,
@@ -56,7 +57,7 @@ int ei_lmder(
/* evaluate the function at the starting point */
/* and calculate its norm. */
- iflag = Functor::f(x, fvec);
+ iflag = Functor.f(x, fvec);
nfev = 1;
if (iflag < 0)
goto algo_end;
@@ -73,17 +74,17 @@ int ei_lmder(
/* calculate the jacobian matrix. */
- iflag = Functor::df(x, fjac);
+ iflag = Functor.df(x, fjac);
++njev;
if (iflag < 0)
break;
- /* if requested, call Functor::f to enable printing of iterates. */
+ /* if requested, call Functor.f to enable printing of iterates. */
if (nprint > 0) {
iflag = 0;
if ((iter - 1) % nprint == 0)
- iflag = Functor::debug(x, fvec, fjac);
+ iflag = Functor.debug(x, fvec, fjac);
if (iflag < 0)
break;
}
@@ -179,7 +180,7 @@ int ei_lmder(
/* evaluate the function at x + p and calculate its norm. */
- iflag = Functor::f(wa2, wa4);
+ iflag = Functor.f(wa2, wa4);
++nfev;
if (iflag < 0)
goto algo_end;
@@ -276,7 +277,7 @@ algo_end:
if (iflag < 0)
info = iflag;
if (nprint > 0)
- iflag = Functor::debug(x, fvec, fjac);
+ iflag = Functor.debug(x, fvec, fjac);
return info;
}
diff --git a/unsupported/Eigen/src/NonLinear/lmder1.h b/unsupported/Eigen/src/NonLinear/lmder1.h
index a4f968ae2..52bde21de 100644
--- a/unsupported/Eigen/src/NonLinear/lmder1.h
+++ b/unsupported/Eigen/src/NonLinear/lmder1.h
@@ -1,10 +1,11 @@
-template<typename Functor, typename Scalar>
+template<typename FunctorType, typename Scalar>
int ei_lmder1(
+ const FunctorType &Functor,
Matrix< Scalar, Dynamic, 1 > &x,
Matrix< Scalar, Dynamic, 1 > &fvec,
VectorXi &ipvt,
- Scalar tol = ei_sqrt(epsilon<Scalar>())
+ const Scalar tol = ei_sqrt(epsilon<Scalar>())
)
{
const int n = x.size(), m=fvec.size();
@@ -19,7 +20,8 @@ int ei_lmder1(
}
ipvt.resize(n);
- info = ei_lmder<Functor,Scalar>(
+ info = ei_lmder(
+ Functor,
x, fvec,
nfev, njev,
fjac, ipvt, qtf, diag,