А в чём проблема? Хранить нужно всего три переменных. Ниже функция для плавучки, но в целых всё то же самое. Если есть гарантия, что постоянная составляющая маленькая, ею можно пренебречь, корень, спасибо SciFi, можно не извлекать, что там остаётся-то?
#define N 256
void rms(double x)
{
static double sum = 0;
static double sum_sqr = 0;
static int count = 0;
sum += x;
sum_sqr += x * x;
if (++count == N)
{
sum /= N;
sum_sqr /= N;
double rms = sqrt(sum_sqr - sum * sum);
do_something_with(rms);
sum = sum_sqr = 0;
count = 0;
}
}