22 static typename Wrapper<T>::Domain fwd(
const TrajBase<T>& x1,
const Interval& x2)
27 static typename ValueType<T>::Type fwd(
const TrajBase<T>& x1,
const ScalarType& x2)
29 IntervalMatrix d(x1.size(),x2.da.cols());
35 x2.def_domain && x1.tdomain().is_superset(x2.m)
40 [[maybe_unused]]
const TrajBase<T>& x1,
41 [[maybe_unused]]
const typename Wrapper<T>::Domain& y,
42 [[maybe_unused]] Interval& x2)
49 class AnalyticOperationExpr<TrajectoryOp<T>,typename ValueType<T>::Type,ScalarType>
50 :
public AnalyticExpr<typename ValueType<T>::Type>,
public OperationExprBase<AnalyticExpr<ScalarType>>
54 using O =
typename ValueType<T>::Type;
56 AnalyticOperationExpr(
const TrajBase<T>& x1,
const ScalarExpr& x2)
57 : OperationExprBase<AnalyticExpr<ScalarType>>(x2), _x1(x1)
60 std::shared_ptr<ExprBase> copy()
const
62 return std::make_shared<AnalyticOperationExpr<TrajectoryOp<T>,O,ScalarType>>(*this);
65 void replace_expr(
const ExprID& old_expr_id,
const std::shared_ptr<ExprBase>& new_expr)
67 return OperationExprBase<AnalyticExpr<ScalarType>>::replace_expr(old_expr_id, new_expr);
70 O fwd_eval(ValuesMap& v, Index total_input_size,
bool natural_eval)
const
72 return AnalyticExpr<O>::init_value(
73 v, TrajectoryOp<T>::fwd(_x1, std::get<0>(this->_x)->fwd_eval(v, total_input_size, natural_eval)));
76 void bwd_eval(ValuesMap& v)
const
78 TrajectoryOp<T>::bwd(_x1, AnalyticExpr<O>::value(v).a, std::get<0>(this->_x)->value(v).a);
79 std::get<0>(this->_x)->bwd_eval(v);
82 virtual bool belongs_to_args_list(
const FunctionArgsList& args)
const
84 return std::get<0>(this->_x)->belongs_to_args_list(args);
89 const TrajBase<T>& _x1;
93 AnalyticFunction<typename ValueType<T>::Type> TrajBase<T>::as_function()
const
95 using D =
typename ValueType<T>::Type;
99 AnalyticExprWrapper<D>(std::make_shared<
100 AnalyticOperationExpr
101 <TrajectoryOp<T>, D, ScalarType>>(*
this,t))