//Low pass bessel filter order=2 alpha1=0.06 class filter { public: filter() { for(int i=0; i <= 2; i++) v[i]=0; } private: short v[3]; public: short step(short x) { v[0] = v[1]; v[1] = v[2]; long tmp = ((((x * 5342655L) >> 5) //= ( 3.9805879528e-2 * x) + ((v[0] * -7243194L) >> 2) //+( -0.4317280064*v[0]) + (v[1] * 5337271L) //+( 1.2725044883*v[1]) )+2097152) >> 22; // round and downshift fixed point /4194304 v[2]= (short)tmp; return (short)(( (v[0] + v[2]) +2 * v[1])); // 2^ } };