diff --git a/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h b/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h index c611ec595..5895fb578 100644 --- a/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +++ b/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h @@ -320,7 +320,7 @@ LevenbergMarquardt::minimizeOneStep( /* determine the levenberg-marquardt parameter. */ - ei_lmpar(fjac, ipvt, diag, qtf, delta, par, wa1, wa2); + ei_lmpar(fjac, ipvt, diag, qtf, delta, par, wa1); /* store the direction p and x + p. calculate the norm of p. */ @@ -433,8 +433,6 @@ LevenbergMarquardt::lmstr1( { n = x.size(); m = functor.values(); - JacobianType fjac(m, n); - VectorXi ipvt; /* check the input parameters for errors. */ if (n <= 0 || m < n || tol < 0.) @@ -605,7 +603,7 @@ LevenbergMarquardt::minimizeOptimumStorageOneStep( /* determine the levenberg-marquardt parameter. */ - ei_lmpar(fjac, ipvt, diag, qtf, delta, par, wa1, wa2); + ei_lmpar(fjac, ipvt, diag, qtf, delta, par, wa1); /* store the direction p and x + p. calculate the norm of p. */ diff --git a/unsupported/Eigen/src/NonLinearOptimization/lmpar.h b/unsupported/Eigen/src/NonLinearOptimization/lmpar.h index c1ab2626c..77c07a8db 100644 --- a/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +++ b/unsupported/Eigen/src/NonLinearOptimization/lmpar.h @@ -7,8 +7,7 @@ void ei_lmpar( const Matrix< Scalar, Dynamic, 1 > &qtb, Scalar delta, Scalar &par, - Matrix< Scalar, Dynamic, 1 > &x, - Matrix< Scalar, Dynamic, 1 > &sdiag) + Matrix< Scalar, Dynamic, 1 > &x) { /* Local variables */ int i, j, k, l; @@ -122,6 +121,7 @@ void ei_lmpar( temp = ei_sqrt(par); wa1 = temp * diag; + Matrix< Scalar, Dynamic, 1 > sdiag(n); ei_qrsolv(r, ipvt, wa1, qtb, x, sdiag); wa2 = diag.cwise() * x;