26 #ifndef CASADI_BLAZING_SPLINE_IMPL_HPP
27 #define CASADI_BLAZING_SPLINE_IMPL_HPP
29 #include "blazing_spline.hpp"
30 #include "function_internal.hpp"
41 const std::string& name,
42 const std::vector< std::vector<double> >& knots,
43 casadi_int diff_order,
44 bool precompute_coeff =
true,
45 bool precompute_grid =
false);
51 const std::string& name,
52 const std::vector<casadi_int>& knot_dims,
53 casadi_int diff_order,
54 bool precompute_coeff =
false,
55 bool precompute_grid =
false,
56 bool inv_input =
false);
61 std::string
class_name()
const override {
return "BlazingSplineFunction";}
71 void merge(
const std::vector<MX>& arg,
72 std::vector<MX>& subs_from, std::vector<MX>& subs_to)
const override;
85 void init(
const Dict& opts)
override;
87 void init_derived_members();
103 bool has_jacobian()
const override;
104 Function get_jacobian(
const std::string& name,
105 const std::vector<std::string>& inames,
106 const std::vector<std::string>& onames,
107 const Dict& opts)
const override;
118 casadi_int
ndim()
const {
return knots_offset_.size()-1; }
128 casadi_int
arg_inv()
const {
return arg_knots() + 1; }
131 bool precompute_coeff_ =
false;
132 bool precompute_grid_ =
false;
133 bool inv_input_ =
false;
134 std::vector< std::vector<double> >
knots_;
136 std::string pedantic_mode_order_ =
"warn";
137 std::string pedantic_mode_size_ =
"error";
146 casadi_int
nc_, ndc_, nddc_;
152 size_t get_n_in()
override;
153 size_t get_n_out()
override;
159 bool get_diff_in(casadi_int i)
override;
165 Sparsity get_sparsity_in(casadi_int i)
override;
166 Sparsity get_sparsity_out(casadi_int i)
override;
173 std::string get_name_in(casadi_int i)
override;
174 std::string get_name_out(casadi_int i)
override;
std::vector< std::string > lookup_modes_
std::vector< casadi_int > knots_offset_
std::vector< double > knots_stacked_
std::vector< double > knots_inv_
std::vector< std::vector< double > > knots_
bool has_parametric_knots() const
Are knots parametric (provided at runtime)?
std::string class_name() const override
Get type name.
casadi_int arg_knots() const
Index of the knots input (only valid when parametric)
static const Options options_
Options.
casadi_int arg_inv() const
Index of the inv input (only valid when inv_input_)
casadi_int ndim() const
Number of dimensions.
bool has_codegen() const override
Is codegen supported?
std::string serialize_base_function() const override
String used to identify the immediate FunctionInternal subclass.
const Options & get_options() const override
Options.
Helper class for C code generation.
Helper class for Serialization.
Internal class for Function.
Base class for FunctionInternal and LinsolInternal.
Helper class for Serialization.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
Options metadata for a class.