13 #ifndef eli_mutil_nls_bisection_method_hpp
14 #define eli_mutil_nls_bisection_method_hpp
18 #include "eli/code_eli.hpp"
28 template<
typename data__>
80 template<
typename f__>
81 int find_root(data__ &root,
const f__ &fun,
const data__ &f0)
const
83 data__ xmn(xmin), xmx(xmax), two(2);
84 data__ fmin, fmid, fmax, xmid, data_abs, data_abs2;
89 data_abs=std::abs(fmin);
98 data_abs=std::abs(fmax);
108 data_abs=std::abs(xmx-xmn);
109 data_abs2=std::abs(fmid);
119 else if (fmid*fmin<0)
132 data_abs=std::abs(xmx-xmn);
133 data_abs2=std::abs(fmid);
void set_bounds(const data__ &xl, const data__ &xh)
Definition: bisection_method.hpp:68
bisection_method()
Definition: bisection_method.hpp:35
data__ xmin
Definition: bisection_method.hpp:32
bool max_iteration_reached(const iteration_type &it) const
Definition: iterative_root_base.hpp:261
int find_root(data__ &root, const f__ &fun, const data__ &f0) const
Definition: bisection_method.hpp:81
bool test_converged(const iteration_type &it, const tolerance_type &relv, const tolerance_type &absv) const
Definition: iterative_root_base.hpp:256
static const int no_root_found
Definition: iterative_root_base.hpp:156
const data__ & get_high_bound() const
Definition: bisection_method.hpp:63
Definition: iterative_root_base.hpp:151
~bisection_method()
Definition: bisection_method.hpp:44
const data__ & get_low_bound() const
Definition: bisection_method.hpp:53
Definition: bisection_method.hpp:29
void set_high_bound(const data__ &xh)
Definition: bisection_method.hpp:58
static const int max_iteration
Definition: iterative_root_base.hpp:155
data__ xmax
Definition: bisection_method.hpp:32
max_iteration_type::data_type iteration_type
Definition: iterative_root_base.hpp:161
static const int converged
Definition: iterative_root_base.hpp:154
void set_low_bound(const data__ &xl)
Definition: bisection_method.hpp:48
bisection_method(const bisection_method< data__ > &bm)
Definition: bisection_method.hpp:39