19 using SetExpr_ptr = std::shared_ptr<SetExpr>;
22 operator&(
const SetExpr_ptr& x1,
const SetExpr_ptr& x2)
24 return std::make_shared<SetOperationExpr<InterSetOp,SetExpr,SetExpr>>(x1,x2);
28 operator&(
const IntervalVector& x1,
const SetExpr_ptr& x2)
30 return std::make_shared<SetOperationExpr<InterSetOp,SetExpr,SetExpr>>(const_set(x1),x2);
34 operator&(
const SetExpr_ptr& x1,
const IntervalVector& x2)
36 return std::make_shared<SetOperationExpr<InterSetOp,SetExpr,SetExpr>>(x1,const_set(x2));
40 operator|(
const SetExpr_ptr& x1,
const SetExpr_ptr& x2)
42 return std::make_shared<SetOperationExpr<UnionSetOp,SetExpr,SetExpr>>(x1,x2);
46 operator|(
const IntervalVector& x1,
const SetExpr_ptr& x2)
48 return std::make_shared<SetOperationExpr<UnionSetOp,SetExpr,SetExpr>>(const_set(x1),x2);
52 operator|(
const SetExpr_ptr& x1,
const IntervalVector& x2)
54 return std::make_shared<SetOperationExpr<UnionSetOp,SetExpr,SetExpr>>(x1,const_set(x2));
58 proj(
const SetExpr_ptr& x1,
const std::vector<Index>& proj_indices,
double eps = 0.01)
60 return std::make_shared<SetOperationExpr<ProjSetOp,SetExpr>>(x1,proj_indices,eps);
64 proj(
const SetExpr_ptr& x1,
const std::vector<Index>& proj_indices,
const IntervalVector& y,
double eps = 0.01)
66 return std::make_shared<SetOperationExpr<ProjSetOp,SetExpr>>(x1,proj_indices,y,eps);
70 cart_prod(
const SetExpr_ptr& x1,
const SetExpr_ptr& x2)
72 return std::make_shared<SetOperationExpr<CartProdSetOp,SetExpr,SetExpr>>(x1,x2);
76 cart_prod(
const SetExpr_ptr& x1,
const IntervalVector& x2)
78 return std::make_shared<SetOperationExpr<CartProdSetOp,SetExpr,SetExpr>>(x1,const_set(x2));
82 cart_prod(
const IntervalVector& x1,
const SetExpr_ptr& x2)
84 return std::make_shared<SetOperationExpr<CartProdSetOp,SetExpr,SetExpr>>(const_set(x1),x2);
88 inverse(
const AnalyticFunction<VectorType>& f,
const SetExpr_ptr& x1)
90 return std::make_shared<SetOperationExpr<InverseSetOp,SetExpr>>(f,x1);
94 inverse(
const AnalyticFunction<VectorType>& f,
const IntervalVector& x1)
96 return std::make_shared<SetOperationExpr<InverseSetOp,SetExpr>>(f,const_set(x1));
100 operator!(
const IntervalVector& x1)
102 return std::make_shared<SetOperationExpr<NotSetOp,SetExpr>>(const_set(x1));
106 operator!(
const SetExpr_ptr& x1)
108 return std::make_shared<SetOperationExpr<NotSetOp,SetExpr>>(x1);
111 inline std::shared_ptr<SetExpr>
112 OctaSym::operator()(
const std::shared_ptr<SetExpr>& x1)
const
114 return std::make_shared<SetOperationExpr<ActionSetOp,SetExpr>>(*
this,x1);