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.