Class documentation of Concepts

Loading...
Searching...
No Matches
operator.hh
Go to the documentation of this file.
1
6#ifndef aglowavOperator_hh
7#define aglowavOperator_hh
8
9#ifdef __GUNG__
10 #pragma interface
11#endif
12
13#include <vector>
14
15#include "basics/exceptions.hh"
16#include "basics/memory.hh"
18#include "aglowav/space.hh"
19
20namespace aglowav {
21
22 // ******************************************************************* C2W **
23
28 template<class F = concepts::Real>
29 class C2W : public concepts::Operator<F> {
30 public:
34 C2W(const concepts::Space<F>& cnst, const Haar3d<F>& wav);
35
45 const Haar3d<F>& spaceX() const {return wav_;}
46 const concepts::Space<F>& spaceY() const {return cnst_;}
47
48 protected:
50 std::ostream& info(std::ostream& os) const;
51
52 private:
54 const Haar3d<F>& wav_;
55 const concepts::Space<F>& cnst_;
56 };
57
58 template<class F>
59 C2W<F>::C2W(const concepts::Space<F>& cnst, const Haar3d<F>& wav)
60 : concepts::Operator<F>(wav.dim(), cnst.dim()), wav_(wav), cnst_(cnst)
61 {
62 conceptsAssert(wav_.dim() == cnst_.dim(), concepts::Assertion());
63 }
64
65 // ******************************************************************* W2C **
66
71 template<class F = concepts::Real>
72 class W2C : public concepts::Operator<F> {
73 public:
77 W2C(const Haar3d<F>& wav, const concepts::Space<F>& cnst);
78
79 /* Transformation from fncW to fncC
80 @throw MissingFeature
81 */
88 const concepts::Space<F>& spaceX() const {return cnst_;}
89 //const AdaptConst3d<IK>& spaceX() const;
90 const Haar3d<F>& spaceY() const {return wav_;}
91
92 protected:
94 std::ostream& info(std::ostream& os) const;
95
96 private:
98 const concepts::Space<F>& cnst_;
99 const Haar3d<F>& wav_;
100 };
101
102 template<class F>
103 W2C<F>::W2C(const Haar3d<F>& wav, const concepts::Space<F>& cnst)
104 : concepts::Operator<F>(wav.dim(), cnst.dim()), cnst_(cnst), wav_(wav)
105 {
106 conceptsAssert(wav_.dim() == cnst_.dim(), concepts::Assertion());
107 }
108
109 // **************************************************************** C2_tl2 **
110
117 template<class F = concepts::Real>
118 class C2_tl2 : public concepts::Operator<F> {
119 public:
125 ~C2_tl2() {delete[] val_; delete[] idx_;}
126
132 void operator()(const concepts::Vector<F>& fncY,
133 concepts::Vector<F>& fncX);
135 const BiHaar3d<F>& spaceX() const {return spc_;}
136 const BiHaar3d<F>& spaceY() const {return spc_;}
137
138 protected:
140 std::ostream& info(std::ostream& os) const;
141
142 private:
144 const BiHaar3d<F>& spc_;
147 concepts::Real* val_;
149 concepts::Real** idx_;
150 };
151
152 // ***************************************************************** C2tl2 **
153
161 template<class F = concepts::Real>
162 class C2tl2 : public concepts::Operator<F> {
163 public:
169 ~C2tl2() {delete[] val_; delete[] idx_;}
170
176 void operator()(const concepts::Vector<F>& fncY,
177 concepts::Vector<F>& fncX);
179 const BiHaar3d<F>& spaceX() const {return spc_;}
180 const BiHaar3d<F>& spaceY() const {return spc_;}
181
182 protected:
184 std::ostream& info(std::ostream& os) const;
185
186 private:
188 const BiHaar3d<F>& spc_;
191 concepts::Real* val_;
193 concepts::Real** idx_;
194 };
195
196 // ****************************************************************** CGt2 **
197
206 template<class F = concepts::Real>
207 class CGt2 : public concepts::Operator<F> {
208 public:
211
217 void operator()(const concepts::Vector<F>& fncY,
218 concepts::Vector<F>& fncX);
220 const Haar3d<F>& spaceX() const {return spc_;}
221 const Haar3d<F>& spaceY() const {return spc_;}
222
223 protected:
225 std::ostream& info(std::ostream& os) const;
226
227 private:
229 const Haar3d<F>& spc_;
232 std::vector<concepts::Real> val_;
233 };
234
235 // ************************************************************** ComposeN **
236
241 template<class F = concepts::Real>
242 class ComposeN : public concepts::Operator<F> {
244 uint n_;
249
250 public:
255 ComposeN(concepts::Operator<F>** ops, uint n);
256 ~ComposeN();
257
259 void operator()(const concepts::Function<F>& fncY,
261 protected:
262 std::ostream& info(std::ostream& os) const;
263 };
264
265 template<class F>
267 : concepts::Operator<F>(ops[0]->dimX(), ops[n-1]->dimY()), n_(n)
268 {
271 for(uint i = 0; i < n_; i++) ops_[i] = ops[i];
273 for(uint j = 0; j < n_-1; j++)
274 f_[j] = new concepts::Vector<F>(ops_[j]->dimY());
275 }
276
277 template<class F>
278 inline ComposeN<F>::~ComposeN() {
279 for(uint i = 0; i < n_-1; i++) delete f_[i];
280 delete[] f_;
281 delete[] ops_;
282 }
283
284 template<class F>
286 concepts::Function<F>& fncX) {
287
288 conceptsAssert((fncY.dim() == this->dimY()) &&
289 (fncX.dim() == this->dimX()), concepts::Assertion());
290
291 ops_[n_-1]->operator()(fncY, *f_[n_-2]);
292 for(uint i = n_-1; --i;) ops_[i]->operator()(*f_[i], *f_[i-1]);
293 ops_[0]->operator()(*f_[0], fncX);
294 }
295
296 template<class F>
297 std::ostream& ComposeN<F>::info(std::ostream& os) const {
298 return os << "aglowav::ComposeN -- (op1 * ... * op" << n_ << ")";
299 }
300
301} // namespace aglowav
302
303#endif // aglowavOperator_hh
void operator()(const concepts::Vector< F > &fncC, concepts::Vector< F > &fncW)
C2W(const concepts::Space< F > &cnst, const Haar3d< F > &wav)
Definition operator.hh:59
const Haar3d< F > & spaceX() const
Spaces of the transformation.
Definition operator.hh:45
void operator()(const concepts::Function< F > &fncC, concepts::Function< F > &fncW)
std::ostream & info(std::ostream &os) const
Information about the operator.
void operator()(const concepts::Function< F > &fncY, concepts::Function< F > &fncX)
const BiHaar3d< F > & spaceX() const
Spaces of the transformation.
Definition operator.hh:135
~C2_tl2()
Destructor.
Definition operator.hh:125
C2_tl2(const BiHaar3d< F > &spc, concepts::Real t)
std::ostream & info(std::ostream &os) const
Information about the operator.
~C2tl2()
Destructor.
Definition operator.hh:169
void operator()(const concepts::Function< F > &fncY, concepts::Function< F > &fncX)
C2tl2(const BiHaar3d< F > &spc, concepts::Real t)
std::ostream & info(std::ostream &os) const
Information about the operator.
const BiHaar3d< F > & spaceX() const
Spaces of the transformation.
Definition operator.hh:179
void operator()(const concepts::Function< F > &fncY, concepts::Function< F > &fncX)
CGt2(const Haar3d< F > &spc, concepts::Real t)
Constructor.
const Haar3d< F > & spaceX() const
Spaces of the transformation.
Definition operator.hh:220
std::ostream & info(std::ostream &os) const
Information about the operator.
std::ostream & info(std::ostream &os) const
Returns information in an output stream.
Definition operator.hh:297
ComposeN(concepts::Operator< F > **ops, uint n)
Definition operator.hh:266
void operator()(const concepts::Function< F > &fncW, concepts::Function< F > &fncC)
std::ostream & info(std::ostream &os) const
Information about the operator.
const concepts::Space< F > & spaceX() const
Spaces of the transformation.
Definition operator.hh:88
W2C(const Haar3d< F > &wav, const concepts::Space< F > &cnst)
Definition operator.hh:103
void operator()(const concepts::Vector< F > &fncW, concepts::Vector< F > &fncC)
uint dim() const
Returns the dimension of the function.
Definition basis.hh:53
virtual const uint dimY() const
virtual void operator()()
#define conceptsAssert(cond, exc)
double Real
Definition typedefs.hh:39
Set< F > makeSet(uint n, const F &first,...)
Definition set.hh:320