codac 2.0.0
Loading...
Searching...
No Matches
codac2_SepTransform.h
Go to the documentation of this file.
1
9
10#pragma once
11
12#include <type_traits>
13#include "codac2_Sep.h"
14#include "codac2_Collection.h"
16#include "codac2_CtcWrapper.h"
17#include "codac2_CtcInverse.h"
18
19namespace codac2
20{
21 class SepTransform : public Sep<SepTransform>
22 {
23 public:
24
25 template<typename S>
26 requires IsSepBaseOrPtr<S>
27 SepTransform(const S& s, const AnalyticFunction<VectorType>& f, const AnalyticFunction<VectorType>& f_inv)
28 : Sep<SepTransform>(f.args()[0]->size() /* f must have only one arg, see following assert */),
29 _sep(s), _ctc_inv(f, IntervalVector(f_inv.args()[0]->size())), _f(f), _f_inv(f_inv)
30 {
31 assert_release(f.args().size() == 1 && "f must have only one arg");
32 assert_release(f.args().size() == f_inv.args().size());
33 }
34
35 BoxPair separate(const IntervalVector& x) const;
36
37 protected:
38
39 const Collection<SepBase> _sep;
40 const CtcInverse<IntervalVector> _ctc_inv;
41 const AnalyticFunction<VectorType> _f, _f_inv;
42 };
43}