26 #ifndef CASADI_MMIN_HPP
27 #define CASADI_MMIN_HPP
29 #include "mx_node.hpp"
40 class CASADI_EXPORT MMin :
public MXNode {
46 explicit MMin(
const MX& x);
56 std::string disp(
const std::vector<std::string>& arg)
const override;
61 casadi_int op()
const override {
return OP_MMIN;}
66 int eval(
const double** arg,
double** res, casadi_int* iw,
double* w)
const override;
71 int eval_sx(
const SXElem** arg, SXElem** res, casadi_int* iw, SXElem* w)
const override;
76 void eval_mx(
const std::vector<MX>& arg, std::vector<MX>& res,
77 const std::vector<bool>& unique={})
const override;
82 void generate(CodeGenerator& g,
83 const std::vector<casadi_int>& arg,
84 const std::vector<casadi_int>& res,
85 const std::vector<bool>& arg_is_ref,
86 std::vector<bool>& res_is_ref)
const override;
91 void ad_forward(
const std::vector<std::vector<MX> >& fseed,
92 std::vector<std::vector<MX> >& fsens)
const override;
97 void ad_reverse(
const std::vector<std::vector<MX> >& aseed,
98 std::vector<std::vector<MX> >& asens)
const override;
103 static MXNode* deserialize(DeserializingStream& s) {
return new MMin(s); }
108 explicit MMin(DeserializingStream& s) : MXNode(s) {}
117 class CASADI_EXPORT MMax :
public MXNode {
123 explicit MMax(
const MX& x);
133 std::string disp(
const std::vector<std::string>& arg)
const override;
138 casadi_int op()
const override {
return OP_MMAX;}
143 int eval(
const double** arg,
double** res, casadi_int* iw,
double* w)
const override;
148 int eval_sx(
const SXElem** arg, SXElem** res, casadi_int* iw, SXElem* w)
const override;
153 void eval_mx(
const std::vector<MX>& arg, std::vector<MX>& res,
154 const std::vector<bool>& unique={})
const override;
159 void generate(CodeGenerator& g,
160 const std::vector<casadi_int>& arg,
161 const std::vector<casadi_int>& res,
162 const std::vector<bool>& arg_is_ref,
163 std::vector<bool>& res_is_ref)
const override;
168 void ad_forward(
const std::vector<std::vector<MX> >& fseed,
169 std::vector<std::vector<MX> >& fsens)
const override;
174 void ad_reverse(
const std::vector<std::vector<MX> >& aseed,
175 std::vector<std::vector<MX> >& asens)
const override;
180 static MXNode* deserialize(DeserializingStream& s) {
return new MMax(s); }
185 explicit MMax(DeserializingStream& s) : MXNode(s) {}