26 #ifndef CASADI_DETERMINANT_HPP
27 #define CASADI_DETERMINANT_HPP
29 #include "mx_node.hpp"
30 #include "linsol_internal.hpp"
43 class CASADI_EXPORT Determinant :
public MXNode {
47 Determinant(
const MX& x,
const Linsol& linsol);
50 ~Determinant()
override {}
55 int eval(
const double** arg,
double** res, casadi_int* iw,
double* w)
const override;
60 int eval_sx(
const SXElem** arg, SXElem** res, casadi_int* iw, SXElem* w)
const override;
65 size_t codegen_sz_w()
const override;
70 void generate(CodeGenerator& g,
71 const std::vector<casadi_int>& arg,
72 const std::vector<casadi_int>& res,
73 const std::vector<bool>& arg_is_ref,
74 std::vector<bool>& res_is_ref)
const override;
79 void eval_mx(
const std::vector<MX>& arg, std::vector<MX>& res,
80 const std::vector<bool>& unique={})
const override;
85 void ad_forward(
const std::vector<std::vector<MX> >& fseed,
86 std::vector<std::vector<MX> >& fsens)
const override;
91 void ad_reverse(
const std::vector<std::vector<MX> >& aseed,
92 std::vector<std::vector<MX> >& asens)
const override;
97 std::string disp(
const std::vector<std::string>& arg)
const override;
102 casadi_int op()
const override {
return OP_DETERMINANT;}
107 void serialize_body(SerializingStream& s)
const override;
112 static MXNode* deserialize(DeserializingStream& s) {
return new Determinant(s); }
121 explicit Determinant(DeserializingStream& s);