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)
const override;
77 void ad_forward(
const std::vector<std::vector<MX> >& fseed,
78 std::vector<std::vector<MX> >& fsens)
const override;
83 void ad_reverse(
const std::vector<std::vector<MX> >& aseed,
84 std::vector<std::vector<MX> >& asens)
const override;
89 int sp_forward(
const bvec_t** arg, bvec_t** res, casadi_int* iw, bvec_t* w)
const override;
94 int sp_reverse(bvec_t** arg, bvec_t** res, casadi_int* iw, bvec_t* w)
const override;
99 const std::string& name()
const override;
104 casadi_int op()
const override {
return OP_PARAMETER;}
109 bool is_valid_input()
const override {
return true;}
114 bool has_duplicates()
const override;
119 void reset_input()
const override;
124 void serialize_body(SerializingStream& s)
const override;
129 static MXNode* deserialize(DeserializingStream& s) {
return new SymbolicMX(s); }
135 explicit SymbolicMX(DeserializingStream& s);