#pragma once #include #include #include namespace mbgl { namespace util { // Computes the log2(x) rounded up to the next integer. // (== number of bits required to store x) uint32_t ceil_log2(uint64_t x); template typename std::enable_if_t::value, T> log2(T x) { // log2() is producing wrong results on ARMv5 binaries // running on ARMv7+ CPUs. #if defined(__ANDROID__) return std::log(x) / M_LN2; #else return std::log2(x); #endif } } // namespace util } // namespace mbgl