11namespace cxx {
namespace arith {
27template<
typename N,
typename D>
29div_ceil(N
const &n, D
const &d)
37 return n / d + (n % d > 0);
47template<
unsigned long V >
50 enum { value =
Ld<V / 2>::value + 1 };
56 enum { value = ~0UL };
75 return 8 *
sizeof(val) - __builtin_clz(val) - 1;
80log2u(
unsigned long val)
82 return 8 *
sizeof(val) - __builtin_clzl(val) - 1;
87log2u(
unsigned long long val)
89 return 8 *
sizeof(val) - __builtin_clzll(val) - 1;
104 return val == 1 ? 0 : log2u(val - 1) + 1;