21 using Type =
typename ExprType<TU>::Type;
23 static typename Type::Domain fwd(
const TU& x1,
const Interval& x2)
28 static Type fwd(
const TU& x1,
const ScalarType& x2)
36 x2.def_domain && x1.tdomain()->t0_tf().is_superset(x2.m)
41 [[maybe_unused]]
const TU& x1,
42 [[maybe_unused]]
const typename Type::Domain& y,
43 [[maybe_unused]] Interval& x2)
50 template<
typename TU,
typename T,
typename S>
51 class AnalyticOperationExpr<TubeOp<TU>,T,S>
56 AnalyticOperationExpr(
const TU& x1,
const ScalarExpr& x2)
60 std::shared_ptr<ExprBase> copy()
const
62 return std::make_shared<AnalyticOperationExpr<TubeOp<TU>,T,ScalarType>>(*this);
65 void replace_arg(
const ExprID& old_arg_id,
const std::shared_ptr<ExprBase>& new_expr)
70 T fwd_eval(ValuesMap& v, Index total_input_size,
bool natural_eval)
const
72 return AnalyticExpr<T>::init_value(
73 v, TubeOp<TU>::fwd(_x1, std::get<0>(this->
_x)->fwd_eval(v, total_input_size, natural_eval)));
76 void bwd_eval(ValuesMap& v)
const
78 TubeOp<TU>::bwd(_x1, AnalyticExpr<T>::value(v).a, std::get<0>(this->
_x)->value(v).a);
79 std::get<0>(this->
_x)->bwd_eval(v);
82 std::pair<Index,Index> output_shape()
const {
86 virtual bool belongs_to_args_list(
const FunctionArgsList& args)
const
88 return std::get<0>(this->
_x)->belongs_to_args_list(args);
91 std::string str(
bool in_parentheses =
false)
const
94 return in_parentheses ?
"(" + s +
")" : s;
97 virtual bool is_str_leaf()
const
A base class for expressions representing operations with multiple operands.
Definition codac2_ExprBase.h:164
OperationExprBase(std::shared_ptr< X >... x)
Definition codac2_ExprBase.h:176
std::tuple< std::shared_ptr< X >... > _x
Definition codac2_ExprBase.h:258
Definition codac2_OctaSym.h:21
Eigen::Matrix< Interval,-1,-1 > IntervalMatrix
Alias for a dynamic-size matrix of intervals.
Definition codac2_IntervalMatrix.h:25