6SYCPWFHMHIG262IJQY4KMB3DEZ3ON247ZAVDEWHG3XVETYGRHBQC
static_assert(test_div(1, 1));
static_assert(test_div(1, 2));
static_assert(test_div(1, 3));
static_assert(test_div(2, 1));
static_assert(test_div(2, 2));
static_assert(test_div(2, 3));
static_assert(test_div(3, 1));
static_assert(test_div(3, 2));
static_assert(test_div(3, 3));
static_assert(test_div_floor(1, 1));
static_assert(test_div_floor(1, 2));
static_assert(test_div_floor(1, 3));
static_assert(test_div_floor(2, 1));
static_assert(test_div_floor(2, 2));
static_assert(test_div_floor(2, 3));
static_assert(test_div_floor(3, 1));
static_assert(test_div_floor(3, 2));
static_assert(test_div_floor(3, 3));
static_assert(test_div(-1, 1));
static_assert(test_div(-1, 2));
static_assert(test_div(-1, 3));
static_assert(test_div(-2, 1));
static_assert(test_div(-2, 2));
static_assert(test_div(-2, 3));
static_assert(test_div(-3, 1));
static_assert(test_div(-3, 2));
static_assert(test_div(-3, 3));
static_assert(test_div_floor(-1, 1));
static_assert(test_div_floor(-1, 2));
static_assert(test_div_floor(-1, 3));
static_assert(test_div_floor(-2, 1));
static_assert(test_div_floor(-2, 2));
static_assert(test_div_floor(-2, 3));
static_assert(test_div_floor(-3, 1));
static_assert(test_div_floor(-3, 2));
static_assert(test_div_floor(-3, 3));
template <typename T> constexpr T mod(const T &x, const T &y) ARITH_INLINE {
return x - div(x, y) * y;
template <typename T>
constexpr T mod_floor(const T &x, const T &y) ARITH_INLINE;
template <typename T> constexpr T mod_floor(const T &x, const T &y) {
return x - div_floor(x, y) * y;