26 #ifndef CASADI_NORM_HPP
27 #define CASADI_NORM_HPP
29 #include "mx_node.hpp"
40 class CASADI_EXPORT Norm :
public MXNode {
46 explicit Norm(
const MX& x);
57 explicit Norm(DeserializingStream& s) : MXNode(s) {}
66 class CASADI_EXPORT NormF :
public Norm {
72 explicit NormF(
const MX& x) : Norm(x) {}
81 int eval_gen(
const T** arg, T** res, casadi_int* iw, T* w)
const;
84 int eval(
const double** arg,
double** res, casadi_int* iw,
double* w)
const override;
87 int eval_sx(
const SXElem** arg, SXElem** res, casadi_int* iw, SXElem* w)
const override;
92 void eval_mx(
const std::vector<MX>& arg, std::vector<MX>& res)
const override;
97 void ad_forward(
const std::vector<std::vector<MX> >& fseed,
98 std::vector<std::vector<MX> >& fsens)
const override;
103 void ad_reverse(
const std::vector<std::vector<MX> >& aseed,
104 std::vector<std::vector<MX> >& asens)
const override;
109 void generate(CodeGenerator& g,
110 const std::vector<casadi_int>& arg,
111 const std::vector<casadi_int>& res,
112 const std::vector<bool>& arg_is_ref,
113 std::vector<bool>& res_is_ref)
const override;
118 std::string disp(
const std::vector<std::string>& arg)
const override;
123 casadi_int op()
const override {
return OP_NORMF;}
128 static MXNode* deserialize(DeserializingStream& s) {
return new NormF(s); }
134 explicit NormF(DeserializingStream& s) : Norm(s) {}
143 class CASADI_EXPORT Norm2 :
public Norm {
149 explicit Norm2(
const MX& x): Norm(x) {}
159 void eval_mx(
const std::vector<MX>& arg, std::vector<MX>& res)
const override;
164 std::string disp(
const std::vector<std::string>& arg)
const override;
169 casadi_int op()
const override {
return OP_NORM2;}
174 static MXNode* deserialize(DeserializingStream& s) {
return new Norm2(s); }
180 explicit Norm2(DeserializingStream& s) : Norm(s) {}
189 class CASADI_EXPORT Norm1 :
public Norm {
195 explicit Norm1(
const MX& x) : Norm(x) {}
205 void ad_forward(
const std::vector<std::vector<MX> >& fseed,
206 std::vector<std::vector<MX> >& fsens)
const override;
211 void ad_reverse(
const std::vector<std::vector<MX> >& aseed,
212 std::vector<std::vector<MX> >& asens)
const override;
216 int eval_gen(
const T** arg, T** res, casadi_int* iw, T* w)
const;
219 int eval(
const double** arg,
double** res, casadi_int* iw,
double* w)
const override;
222 int eval_sx(
const SXElem** arg, SXElem** res, casadi_int* iw, SXElem* w)
const override;
227 void eval_mx(
const std::vector<MX>& arg, std::vector<MX>& res)
const override;
232 void generate(CodeGenerator& g,
233 const std::vector<casadi_int>& arg,
234 const std::vector<casadi_int>& res,
235 const std::vector<bool>& arg_is_ref,
236 std::vector<bool>& res_is_ref)
const override;
241 std::string disp(
const std::vector<std::string>& arg)
const override;
246 casadi_int op()
const override {
return OP_NORM1;}
251 static MXNode* deserialize(DeserializingStream& s) {
return new Norm1(s); }
257 explicit Norm1(DeserializingStream& s) : Norm(s) {}
266 class CASADI_EXPORT NormInf :
public Norm {
272 explicit NormInf(
const MX& x) : Norm(x) {}
277 ~NormInf()
override {}
282 void ad_forward(
const std::vector<std::vector<MX> >& fseed,
283 std::vector<std::vector<MX> >& fsens)
const override;
288 void ad_reverse(
const std::vector<std::vector<MX> >& aseed,
289 std::vector<std::vector<MX> >& asens)
const override;
293 int eval_gen(
const T** arg, T** res, casadi_int* iw, T* w)
const;
296 int eval(
const double** arg,
double** res, casadi_int* iw,
double* w)
const override;
299 int eval_sx(
const SXElem** arg, SXElem** res, casadi_int* iw, SXElem* w)
const override;
304 void eval_mx(
const std::vector<MX>& arg, std::vector<MX>& res)
const override;
309 void generate(CodeGenerator& g,
310 const std::vector<casadi_int>& arg,
311 const std::vector<casadi_int>& res,
312 const std::vector<bool>& arg_is_ref,
313 std::vector<bool>& res_is_ref)
const override;
318 std::string disp(
const std::vector<std::string>& arg)
const override;
323 casadi_int op()
const override {
return OP_NORMINF;}
328 static MXNode* deserialize(DeserializingStream& s) {
return new NormInf(s); }
334 explicit NormInf(DeserializingStream& s) : Norm(s) {}