25 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
27 typedef _Scalar Scalar;
30 typedef typename MathBase::VectorXs VectorXs;
34 throw_pretty(
"Invalid argument: " <<
"ns cannot be zero");
39 virtual void calc(
const std::shared_ptr<SquashingDataAbstract>& data,
40 const Eigen::Ref<const VectorXs>& s) = 0;
41 virtual void calcDiff(
const std::shared_ptr<SquashingDataAbstract>& data,
42 const Eigen::Ref<const VectorXs>& s) = 0;
43 virtual std::shared_ptr<SquashingDataAbstract> createData() {
44 return std::allocate_shared<SquashingDataAbstract>(
45 Eigen::aligned_allocator<SquashingDataAbstract>(),
this);
48 std::size_t get_ns()
const {
return ns_; };
49 const VectorXs& get_s_lb()
const {
return s_lb_; };
50 const VectorXs& get_s_ub()
const {
return s_ub_; };
52 void set_s_lb(
const VectorXs& s_lb) { s_lb_ = s_lb; };
53 void set_s_ub(
const VectorXs& s_ub) { s_ub_ = s_ub; };