10 return (val != 0) && ((val & (val - 1)) == 0);
58 if (val == 0)
return 0;
59 int c = __builtin_clz(val);
60 return 8 *
sizeof(int) - 1 - c;
67 if (val == 0)
return 0;
68 int c = __builtin_clzll(val);
69 return 8 *
sizeof(
long long) - 1 - c;
76 return floorLog2(val) + (val & (val - 1) ? 1 : 0);
83 return floorLog2(val) + (val & (val - 1) ? 1 : 0);
constexpr int pow2(int val)
Integer base 2 power.
Definition: pow2.h:15
constexpr long long pow2ll(int val)
Long long integer base 2 power.
Definition: pow2.h:22
int floorLog2(int val)
Non-constexpr floorLog2(int).
Definition: pow2.h:56
int ceilLog2(int val)
Non-constexpr log base 2 ceiling.
Definition: pow2.h:74
constexpr size_t pow2Le(size_t val)
A power of 2 that is less than or equal to val.
Definition: pow2.h:39
constexpr size_t pow2Ge(size_t val)
A power of 2 that is greater than or equal to val.
Definition: pow2.h:46
constexpr int floorLog2_constexpr(size_t val)
The base-2 logarithm of val.
Definition: pow2.h:31
constexpr bool isPow2(size_t val)
Return true if and only if val is a power of 2.
Definition: pow2.h:8