mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
34 lines
801 B
C++
34 lines
801 B
C++
|
|
template<typename Functor, typename Scalar>
|
|
int ei_lmstr1(
|
|
Matrix< Scalar, Dynamic, 1 > &x,
|
|
Matrix< Scalar, Dynamic, 1 > &fvec,
|
|
VectorXi &ipvt,
|
|
Scalar tol = ei_sqrt(epsilon<Scalar>())
|
|
)
|
|
{
|
|
const int n = x.size(), m=fvec.size();
|
|
int info, nfev=0, njev=0;
|
|
Matrix< Scalar, Dynamic, Dynamic > fjac(m, n);
|
|
Matrix< Scalar, Dynamic, 1> diag, qtf;
|
|
|
|
/* check the input parameters for errors. */
|
|
if (n <= 0 || m < n || tol < 0.) {
|
|
printf("ei_lmstr1 bad args : m,n,tol,...");
|
|
return 0;
|
|
}
|
|
|
|
ipvt.resize(n);
|
|
info = ei_lmstr<Functor,Scalar>(
|
|
x, fvec,
|
|
nfev, njev,
|
|
fjac, ipvt, qtf, diag,
|
|
1,
|
|
100.,
|
|
(n+1)*100,
|
|
tol, tol, Scalar(0.)
|
|
);
|
|
return (info==8)?4:info;
|
|
}
|
|
|