Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- template< std::size_t argument, std::size_t base = 2, bool = (argument < base) >
- constexpr std::size_t log = 1 + log< (argument / base), base >;
- template< std::size_t argument, std::size_t base >
- constexpr std::size_t log< argument, base, true > = 0;
- static_assert(log< 1, 2 > == 0);
- static_assert(log< 2, 2 > == 1);
- static_assert(log< 3, 2 > == 1);
- static_assert(log< 4, 2 > == 2);
- static_assert(log< 5, 2 > == 2);
- static_assert(log< 6, 2 > == 2);
- static_assert(log< 7, 2 > == 2);
- static_assert(log< 8, 2 > == 3);
- static_assert(log< 15, 2 > == 3);
- static_assert(log< 16, 2 > == 4);
- static_assert(log< 1024, 2 > == 10);
- static_assert(log< 1, 3 > == 0);
- static_assert(log< 2, 3 > == 0);
- static_assert(log< 3, 3 > == 1);
- static_assert(log< 4, 3 > == 1);
- static_assert(log< 8, 3 > == 1);
- static_assert(log< 9, 3 > == 2);
- static_assert(log< 10, 3 > == 2);
- static_assert(log< 26, 3 > == 2);
- static_assert(log< 27, 3 > == 3);
- static_assert(log< 28, 3 > == 3);
- static_assert(log< 80, 3 > == 3);
- static_assert(log< 81, 3 > == 4);
- static_assert(log< 82, 3 > == 4);
- static_assert(log< 1, 10 > == 0);
- static_assert(log< 10, 10 > == 1);
- static_assert(log< 100, 10 > == 2);
- static_assert(log< 1000, 10 > == 3);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement