www.pudn.com > slow.zip > filters.h


struct filter; 
 
typedef float (*fstepfunc)(filter*, float); 
 
struct fspec 
  { int nz, np; 
    fstepfunc fsf; 
  }; 
 
struct filter 
  { filter(fspec*); 
    ~filter(); 
    float fstep(float x) { return fs -> fsf(this, x); } 
    fspec *fs; float *v; 
    float sum; int ptr;	    /* mvg avg filters only */ 
  }; 
 
struct cfilter 
  { cfilter(fspec *fs) 
      { ref = new filter(fs); 
	imf = new filter(fs); 
      } 
    ~cfilter() 
      { delete ref; delete imf; 
      } 
    complex fstep(complex z) { return complex(ref -> fstep(z.re), imf -> fstep(z.im)); } 
 
private: 
    filter *ref, *imf; 
  };