An adaptive filter is programmed with an algorithm based on a normalized Least
Mean Squares (nLMS) algorithm that adapts each sample time. The algorithm is modified
to be more efficient in a variety of DSPs by computing multiple errors, one per
sample, before updating coefficients. The update equation utilizes the multiple
errors to achieve adaptation at a similar performance to known nLMS algorithms
that adapt each sample time but without the instability that is observed in low
echo-to-near-end-noise ratio (ENR) input conditions. Varying the relaxation step
size prevents divergence. The DSP utilizes either one or more MAC units.