the implementation that uses doubles
        // to minimize roundoff.
        let y = new Float64Array(input.length + workSize);

        // Copy the input over.
        for (let k = 0; k < input.length; ++k)
          x[k + feedforward.length] = input[k];

        // Run the filter
        for (let n = 0; n < input.length; ++n) {
          let index = n + workSize;
          let yn = 0;
          for (let k = 0; k < feedforward.length; ++k)
            yn += feedforward[k] * x[index - k];
          for (le