/* filter.c - IIR example routine */
double filter(double x, double* w) {
double y;
w[0] = 0.8 * w[1] + x; // internal state
y = 5 * w[0] + 2 * w[1]; // compute output
w[1] = w[0]; // update internal state
return y;
}
main:
w = (double*) calloc(2, sizeof(double));
for (n=0; n < N; n++) {
y[n] = filter(x[n], w);
}