1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| void filter_pwv_data(float *X,float *Y,double *mem_1,double *mem_2)
{
float *x,*y;
double *m1,*m2;
double o,w;
long i,j;
double *temp_a_coefs,*temp_b_coefs;
x = X;
y = Y;
for(i=0; i<(ivec_length-1); i++)
{
m1 = mem_1;
m2 = mem_2;
temp_a_coefs = a_coefs;
temp_b_coefs = b_coefs;
o = *x++ * gain;
for(j=0; j<numb_quads; j++)
{
*temp_b_coefs++;
w = o - *m1 * *temp_b_coefs++;
w = w - *m2 * *temp_b_coefs++;
*temp_a_coefs++;
o = w + *m1 * *temp_a_coefs++;
o = o + *m2 * *temp_a_coefs++;
*m1++ = w;
} *m2++ = *m1;
*y++ = (float)o;
}
} |