20 virtual void operator+=(uint i) = 0;
21 virtual void operator-=(uint i) = 0;
28 template <
class F = concepts::Real>
34 void operator+=(uint i) {val_ += i;}
35 void operator-=(uint i) {val_ -= i;}
37 inline F* value()
const {
return val_;}
52 virtual uint memory()
const = 0;
59 template <
class F = concepts::Real>
64 inline XYColF(uint blksz, uint n) : blksz_(blksz), n_(n) {
65 this->val_ =
new F[blksz_*n_];
66 std::memset(this->val_, 0, blksz_ * n_ *
sizeof(F));
68 inline ~XYColF() {
delete[] this->val_;}
73 uint memory()
const {
return sizeof(
XYColF<F>) + blksz_ * n_ *
sizeof(F);}
74 void operator+=(uint i) {
77 void operator-=(uint i) {
97 template <
class F = concepts::Real>
105 virtual uint
m()
const = 0;
144 friend std::ostream& operator<<(std::ostream& os,
const FColExp& f);
147 virtual uint memory(uint blksz)
const = 0;
148 virtual void info(std::ostream& os, uint)
const { os <<
"FColExp()"; }
155 template <
class F = concepts::Real>
158 inline FColF(uint blksz) {this->val_ =
new F[blksz];}
159 inline ~FColF() {
delete[] this->val_;}
161 inline F* value()
const {
return this->val_;}
162 uint memory(uint blksz)
const {
163 return sizeof(
FColF<F>) + blksz *
sizeof(F);
165 void info(std::ostream& os, uint blksz)
const {
166 for(uint i = 0; i < blksz-1; i++) os << this->val_[i] <<
", ";
167 os << this->val_[blksz-1];
184 template <
class Fspc = concepts::Real>
194 virtual uint
m()
const = 0;
214 Fspc dst[])
const = 0;
#define conceptsException(exc)
virtual uint blksz(uint m) const =0
virtual void evaluate(uint m, const concepts::Real3d &z, FColExp *Fexp) const =0
virtual void apply(uint m, const FColExp *Fexp, const Fspc src[], Fspc dst[]) const =0
virtual FColExp * getCol(uint blksz) const =0
virtual uint m() const =0
Order of the expansion.
virtual void evaluate(const concepts::Element< F > &elm, const concepts::Real3d &c, XYColExpPtr *XY[]) const =0
virtual uint blksz() const =0
Size of memory used for the expansion.
virtual void shift(const concepts::Real3d &z, const concepts::Real src[], concepts::Real dst[]) const =0
virtual XYColExp * getCol(uint blksz, uint n) const =0
virtual uint m() const =0
Order of the expansion.
virtual void apply(const XYColExpPtr *XY, const F src[], F dst[]) const =0
std::complex< Real > Cmplx
Type for a complex number. It also depends on the setting of Real.