А не подойдёт ли Вам такой вариант?
Y[i] = (X[i] - Y[i-1])/N + Y[i-1] - это простейший рекурсивный НЧ-фильтр первого порядка, цифровой эквивалент аналогового ФНЧ на R и C.
Если N - кратно степени 2, то ресурсов минимум и помнить кучу выборок не надо.
Если не кратно, то можно реализовать в несколько параллельных /N1, /N2, /N3 - каждый из которых кратен степени 2 и складывать результаты.
Чтобы сразу не терять в точности на отбрасывании младших бит, исходному X[i] добавить младших нулевых битов, а потом сдвинуть на их кол-во результат.
Прикрепил результат моделирования.
Эскизы прикрепленных изображений
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)