diff --git a/MovingAverage.h b/MovingAverage.h index 794f657..fb68a4c 100644 --- a/MovingAverage.h +++ b/MovingAverage.h @@ -62,9 +62,15 @@ MovingAverage::MovingAverage(): _samples(N) { _result = 0; + // prevent N==0 + static_assert(N > 0, "Buffer length must be greater than 0"); + while (_samples >> _shift != 1) { _shift++; } + + _samples = 1 << _shift; //ensure _samples is a power of 2 + } template