25 #ifndef CASADI_EXPM_IMPL_HPP
26 #define CASADI_EXPM_IMPL_HPP
29 #include "function_internal.hpp"
30 #include "plugin_interface.hpp"
35 class CASADI_EXPORT Expm :
public FunctionInternal,
public PluginInterface<Expm> {
39 Expm(
const std::string& name,
const Sparsity& A);
47 size_t get_n_in()
override {
return 2;}
48 size_t get_n_out()
override {
return 1;}
55 Sparsity get_sparsity_in(casadi_int i)
override;
56 Sparsity get_sparsity_out(casadi_int i)
override;
63 static const Options options_;
64 const Options& get_options()
const override {
return options_;}
68 void init(
const Dict& opts)
override;
74 Function get_forward(casadi_int nfwd,
const std::string& name,
75 const std::vector<std::string>& inames,
76 const std::vector<std::string>& onames,
77 const Dict& opts)
const override;
78 bool has_forward(casadi_int nfwd)
const override {
return true;}
85 Function get_reverse(casadi_int nadj,
const std::string& name,
86 const std::vector<std::string>& inames,
87 const std::vector<std::string>& onames,
88 const Dict& opts)
const override;
89 bool has_reverse(casadi_int nadj)
const override {
return true;}
95 bool get_diff_in(casadi_int i)
override {
return i != 0 || !const_A_;}
98 Sparsity get_jac_sparsity(casadi_int oind, casadi_int iind,
bool symmetric)
const override;
99 bool has_jac_sparsity(casadi_int oind, casadi_int iind)
const override {
return true;}
102 typedef Expm* (*Creator)(
const std::string& name,
const Sparsity& A);
108 static std::map<std::string, Plugin> solvers_;
111 static const std::string infix_;
114 static std::string shortname() {
return "expm";}
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.