26 #include "symbolic_mx.hpp"
27 #include "casadi_misc.hpp"
28 #include "serializing_stream.hpp"
44 int SymbolicMX::eval(
const double** arg,
double** res, casadi_int* iw,
double* w)
const {
56 std::vector<std::vector<MX> >& fsens)
const {
60 std::vector<std::vector<MX> >& asens)
const {
68 std::fill_n(res[0],
nnz(), 0);
73 std::fill_n(res[0],
nnz(), 0);
79 casadi_warning(
"Duplicate expression: " +
name());
Helper class for Serialization.
void unpack(Sparsity &e)
Reconstruct an object from the input stream.
Node class for MX objects.
casadi_int nnz(casadi_int i=0) const
virtual void serialize_body(SerializingStream &s) const
Serialize an object without type information.
void set_sparsity(const Sparsity &sparsity)
Set the sparsity.
The basic scalar symbolic class of CasADi.
Helper class for Serialization.
void pack(const Sparsity &e)
Serializes an object to the output stream.
static Sparsity dense(casadi_int nrow, casadi_int ncol=1)
Create a dense rectangular sparsity pattern *.
void ad_reverse(const std::vector< std::vector< MX > > &aseed, std::vector< std::vector< MX > > &asens) const override
Calculate reverse mode directional derivatives.
void serialize_body(SerializingStream &s) const override
Serialize an object without type information.
std::string disp(const std::vector< std::string > &arg) const override
Print expression.
int eval_sx(const SXElem **arg, SXElem **res, casadi_int *iw, SXElem *w) const override
Evaluate the function symbolically (SX)
int eval(const double **arg, double **res, casadi_int *iw, double *w) const override
Evaluate the function numerically.
int sp_reverse(bvec_t **arg, bvec_t **res, casadi_int *iw, bvec_t *w) const override
Propagate sparsity backwards.
void ad_forward(const std::vector< std::vector< MX > > &fseed, std::vector< std::vector< MX > > &fsens) const override
Calculate forward mode directional derivatives.
void reset_input() const override
Reset the marker for an input expression.
SymbolicMX(const std::string &name, casadi_int nrow=1, casadi_int ncol=1)
Constructors.
void eval_mx(const std::vector< MX > &arg, std::vector< MX > &res) const override
Evaluate symbolically (MX)
bool has_duplicates() const override
Detect duplicate symbolic expressions.
int sp_forward(const bvec_t **arg, bvec_t **res, casadi_int *iw, bvec_t *w) const override
Propagate sparsity forward.
const std::string & name() const override
Get the name.
unsigned long long bvec_t