Merge pull request #109 from BorisMansencal/nextHighestPowerOf2bug

correct utils::nextHighestPowerOf2
pull/123/head
Jeff Johnson 2017-05-07 16:03:10 -07:00 committed by GitHub
commit 9e6e1a81c4
1 changed files with 4 additions and 1 deletions

View File

@ -61,7 +61,7 @@ static_assert(!isPowerOf2(3333), "isPowerOf2");
template <typename T> template <typename T>
constexpr __host__ __device__ T nextHighestPowerOf2(T v) { constexpr __host__ __device__ T nextHighestPowerOf2(T v) {
return (isPowerOf2(v) ? (T) 2 * v : (1 << (log2(v) + 1))); return (isPowerOf2(v) ? (T) 2 * v : ((T)1 << (log2(v) + 1)));
} }
static_assert(nextHighestPowerOf2(1) == 2, "nextHighestPowerOf2"); static_assert(nextHighestPowerOf2(1) == 2, "nextHighestPowerOf2");
@ -73,4 +73,7 @@ static_assert(nextHighestPowerOf2(15) == 16, "nextHighestPowerOf2");
static_assert(nextHighestPowerOf2(16) == 32, "nextHighestPowerOf2"); static_assert(nextHighestPowerOf2(16) == 32, "nextHighestPowerOf2");
static_assert(nextHighestPowerOf2(17) == 32, "nextHighestPowerOf2"); static_assert(nextHighestPowerOf2(17) == 32, "nextHighestPowerOf2");
static_assert(nextHighestPowerOf2(1536000000u) == 2147483648u, "nextHighestPowerOf2");
static_assert(nextHighestPowerOf2<size_t>(2147483648) == (size_t)4294967296, "nextHighestPowerOf2");
} } } // namespace } } } // namespace