26 #ifndef CASADI_SYMBOLIC_MX_HPP
27 #define CASADI_SYMBOLIC_MX_HPP
29 #include "mx_node.hpp"
42 class CASADI_EXPORT SymbolicMX :
public MXNode {
48 explicit SymbolicMX(
const std::string& name, casadi_int nrow=1, casadi_int ncol=1);
53 explicit SymbolicMX(
const std::string& name,
const Sparsity & sp);
56 ~SymbolicMX()
override {}
61 std::string disp(
const std::vector<std::string>& arg)
const override;
64 int eval(
const double** arg,
double** res, casadi_int* iw,
double* w)
const override;
67 int eval_sx(
const SXElem** arg, SXElem** res, casadi_int* iw, SXElem* w)
const override;
72 void eval_mx(
const std::vector<MX>& arg, std::vector<MX>& res,
73 const std::vector<bool>& unique={})
const override;
78 void ad_forward(
const std::vector<std::vector<MX> >& fseed,
79 std::vector<std::vector<MX> >& fsens)
const override;
84 void ad_reverse(
const std::vector<std::vector<MX> >& aseed,
85 std::vector<std::vector<MX> >& asens)
const override;
90 int sp_forward(
const bvec_t** arg, bvec_t** res, casadi_int* iw, bvec_t* w)
const override;
95 int sp_reverse(bvec_t** arg, bvec_t** res, casadi_int* iw, bvec_t* w)
const override;
100 const std::string& name()
const override;
105 casadi_int op()
const override {
return OP_PARAMETER;}
110 bool is_valid_input()
const override {
return true;}
115 bool has_duplicates()
const override;
120 void reset_input()
const override;
125 void serialize_body(SerializingStream& s)
const override;
130 static MXNode* deserialize(DeserializingStream& s) {
return new SymbolicMX(s); }
136 explicit SymbolicMX(DeserializingStream& s);