diff options
Diffstat (limited to 'unsupported/Eigen')
-rw-r--r-- | unsupported/Eigen/src/NonLinear/lmder.h | 15 | ||||
-rw-r--r-- | unsupported/Eigen/src/NonLinear/lmder1.h | 8 |
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, |