(* FIR with the array of coefficient [b] *) (* sums are computed from left to right *) let node fir(m)(b)(u) = y where rec t = Tapped_delays.window(m)(0.0, u) and y = Arrays.vvproduct(m)(b, t) let node iir_direct1(n)(m)(b)(a)(u) = y where rec output1 = fir(m)(b)(u) and y = output1 -. output2 and output2 = fir(n-1)(a)(0.0 fby y)