2025-01-30 21:33:00 -05:00
|
|
|
#pragma once
|
|
|
|
|
2024-12-18 09:57:16 -05:00
|
|
|
#include <climits>
|
|
|
|
#include <iostream>
|
|
|
|
|
2025-01-30 21:33:00 -05:00
|
|
|
inline constexpr uint32_t next_pow_2(uint32_t const num) {
|
2024-12-18 09:57:16 -05:00
|
|
|
if (num <= 1) return num;
|
|
|
|
return 1 << (CHAR_BIT * sizeof(num) - __builtin_clz(num - 1));
|
2025-01-30 21:33:00 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
inline constexpr std::enable_if_t<std::is_integral_v<T>, T> ceil_div(T a, T b) {
|
|
|
|
return (a + b - 1) / b;
|
2024-12-18 09:57:16 -05:00
|
|
|
}
|