#include <array>
#include <cassert>
+#include <cmath>
#include <cstdint>
#include <cstdlib>
#include <limits>
operator const T&() const { return entry; }
void operator<<(int bonus) {
- assert(abs(bonus) <= D); // Ensure range is [-D, D]
+ assert(std::abs(bonus) <= D); // Ensure range is [-D, D]
static_assert(D <= std::numeric_limits<T>::max(), "D overflows T");
- entry += bonus - entry * abs(bonus) / D;
+ entry += bonus - entry * std::abs(bonus) / D;
- assert(abs(entry) <= D);
+ assert(std::abs(entry) <= D);
}
};