35 return std::make_shared<LevmarEngine>(max_iterations);
41 double epsilon2,
double epsilon3,
double delta)
42 : m_itmax{itmax}, m_opts{tau, epsilon1, epsilon2, epsilon3, delta} { }
47 #ifdef LINSOLVERS_RETAIN_MEMORY
58 auto adata =
std::tie(parameter_manager, residual_estimator);
61 auto levmar_res_func = [](
double *p,
double *hx, int, int,
void *extra) {
62 #ifdef LINSOLVERS_RETAIN_MEMORY
63 levmar_mutex.unlock();
65 auto* extra_ptr = (decltype(adata)*)extra;
71 #ifdef LINSOLVERS_RETAIN_MEMORY
86 #ifdef LINSOLVERS_RETAIN_MEMORY
90 auto res = dlevmar_dif(levmar_res_func,
99 covariance_matrix.
data(),
102 #ifdef LINSOLVERS_RETAIN_MEMORY
103 levmar_mutex.unlock();
114 summary.success_flag = (res != -1);
115 summary.iteration_no = info[5];
116 summary.underlying_framework_info = info;