Inner-loop function generated by Faust:
virtual void compute (int count, float** input, float** output) { float* output0 = output[0]; for (int i=0; i<count; i++) { iVec0[0] = 1; iRec0[0] = ((1 + iRec0[1]) & 15); ftbl0[iRec0[0]] = (1 - iVec0[1]); output0[i] = ((((0.468750f * ftbl0[((iRec0[0] - 1) & 15)]) + (2.343750e-02f * ftbl0[((iRec0[0] - 4) & 15)])) + (0.703125f * ftbl0[((iRec0[0] - 2) & 15)])) - ((0.156250f * ftbl0[((iRec0[0] - 3) & 15)]) + (3.906250e-02f * ftbl0[(iRec0[0] & 15)]))); // post processing iRec0[1] = iRec0[0]; iVec0[1] = iVec0[0]; } }Test Program (Faust 0.9.9.3):
import("filter.lib"); N = 16; impulse = 1-1'; process = impulse : fdelay4(N,1.5);