25 #ifndef CASADI_BISECTION_HPP
26 #define CASADI_BISECTION_HPP
28 #include "casadi/core/rootfinder_impl.hpp"
29 #include <casadi/solvers/casadi_rootfinder_bisection_export.h>
33 struct BisectionMemory :
public RootfinderMemory {
36 casadi_int search_iter;
41 class Bisection :
public Rootfinder {
43 explicit Bisection(
const std::string &name,
const Function &f);
45 ~Bisection()
override;
47 const char *plugin_name()
const override {
return "bisection"; }
49 std::string class_name()
const override {
return "Bisection"; }
51 static Rootfinder *creator(
const std::string &name,
const Function &f) {
52 return new Bisection(name, f);
55 static const Options options_;
57 const Options &get_options()
const override {
return options_; }
59 Dict get_stats(
void *mem)
const override;
61 void init(
const Dict &opts)
override;
63 void *alloc_mem()
const override {
return new BisectionMemory(); }
65 int init_mem(
void *mem)
const override;
67 void free_mem(
void *mem)
const override {
delete static_cast<BisectionMemory *
>(mem); }
69 void set_work(
void *mem,
const double **&arg,
double **&res,
70 casadi_int *&iw,
double *&w)
const override;
72 int solve(
void *mem)
const override;
74 static const std::string meta_doc;
80 void serialize_body(SerializingStream &s)
const override;
82 static ProtoFunction *deserialize(DeserializingStream &s) {
return new Bisection(s); }
85 explicit Bisection(DeserializingStream &s);
88 casadi_int max_search_;
98 int finish(BisectionMemory *m,
double x_sol,
double f_sol,
double width,
100 static std::string status_str(
int status);
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.