36 class OctaSym :
public std::vector<int>,
public Action
40 OctaSym(std::initializer_list<int> s);
41 OctaSym(
const std::vector<int>& s);
43 OctaSym invert()
const;
45 OctaSym operator*(
const OctaSym& s)
const;
47 Matrix permutation_matrix()
const;
49 int _sign(
int a)
const
51 return (a > 0) ? 1 : ((a < 0) ? -1 : 0);
55 Mat<T,-1,1> operator()(
const Mat<T,-1,1>& x)
const
57 assert_release(x.size() == (Index)size());
58 Mat<T,-1,1> x_(size());
59 for(
size_t i = 0 ; i < size() ; i++)
60 x_[i] = _sign((*
this)[i])*x[std::abs((*
this)[i])-1];
65 requires IsCtcBaseOrPtr<C,IntervalVector>
66 CtcAction operator()(
const C& c)
const;
71 SepAction operator()(
const S& s)
const;
74 std::shared_ptr<SetExpr> operator()(
const std::shared_ptr<SetExpr>& x1)
const;
77 friend std::ostream& operator<<(std::ostream& str,
const OctaSym& s)
80 for(
size_t i = 0 ; i < s.size() ; i++)
81 str << (i != 0 ?
" " :
"") << s[i];
82 str <<
")" << std::flush;