From e3ecd73cd8823acdd057a699b5da1a9eff882bab Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Sun, 30 Jan 2022 21:02:32 -0800 Subject: [PATCH] [util] Add constexpr log2/is_pow2 helpers I didn't end up using these, but constexpr log2 and is_pow2 functions might be helpful. --- src/libraries/util/include/util/util.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/libraries/util/include/util/util.h b/src/libraries/util/include/util/util.h index f46c91a..41ed91b 100644 --- a/src/libraries/util/include/util/util.h +++ b/src/libraries/util/include/util/util.h @@ -6,6 +6,14 @@ namespace util { +constexpr size_t const_log2(size_t n) { + return n < 2 ? 1 : 1 + const_log2(n/2); +} + +constexpr bool is_pow2(size_t n) { + return (n & (n-1)) == 0; +} + // Get the base-2 logarithm of i inline unsigned log2(uint64_t i) { if (i < 2) return 0;