|
|
@@ -174,7 +174,7 @@ namespace isPowerOfTwo
|
|
|
}
|
|
|
}//isPowerOfTwo
|
|
|
|
|
|
-namespace ceilPowerOfTwo
|
|
|
+namespace ceilPowerOfTwo_advanced
|
|
|
{
|
|
|
template <typename genIUType>
|
|
|
GLM_FUNC_QUALIFIER genIUType highestBitValue(genIUType Value)
|
|
|
@@ -290,6 +290,72 @@ namespace ceilPowerOfTwo
|
|
|
Error += test_int32();
|
|
|
Error += test_uint32();
|
|
|
|
|
|
+ return Error;
|
|
|
+ }
|
|
|
+}//namespace ceilPowerOfTwo_advanced
|
|
|
+
|
|
|
+namespace roundPowerOfTwo
|
|
|
+{
|
|
|
+ int test()
|
|
|
+ {
|
|
|
+ int Error = 0;
|
|
|
+
|
|
|
+ glm::uint32 const A = glm::roundPowerOfTwo(7u);
|
|
|
+ Error += A == 8u ? 0 : 1;
|
|
|
+
|
|
|
+ glm::uint32 const B = glm::roundPowerOfTwo(15u);
|
|
|
+ Error += B == 16u ? 0 : 1;
|
|
|
+
|
|
|
+ glm::uint32 const C = glm::roundPowerOfTwo(31u);
|
|
|
+ Error += C == 32u ? 0 : 1;
|
|
|
+
|
|
|
+ glm::uint32 const D = glm::roundPowerOfTwo(9u);
|
|
|
+ Error += D == 8u ? 0 : 1;
|
|
|
+
|
|
|
+ glm::uint32 const E = glm::roundPowerOfTwo(17u);
|
|
|
+ Error += E == 16u ? 0 : 1;
|
|
|
+
|
|
|
+ glm::uint32 const F = glm::roundPowerOfTwo(33u);
|
|
|
+ Error += F == 32u ? 0 : 1;
|
|
|
+
|
|
|
+ return Error;
|
|
|
+ }
|
|
|
+}//namespace roundPowerOfTwo
|
|
|
+
|
|
|
+namespace floorPowerOfTwo
|
|
|
+{
|
|
|
+ int test()
|
|
|
+ {
|
|
|
+ int Error = 0;
|
|
|
+
|
|
|
+ glm::uint32 const A = glm::floorPowerOfTwo(7u);
|
|
|
+ Error += A == 4u ? 0 : 1;
|
|
|
+
|
|
|
+ glm::uint32 const B = glm::floorPowerOfTwo(15u);
|
|
|
+ Error += B == 8u ? 0 : 1;
|
|
|
+
|
|
|
+ glm::uint32 const C = glm::floorPowerOfTwo(31u);
|
|
|
+ Error += C == 16u ? 0 : 1;
|
|
|
+
|
|
|
+ return Error;
|
|
|
+ }
|
|
|
+}//namespace floorPowerOfTwo
|
|
|
+
|
|
|
+namespace ceilPowerOfTwo
|
|
|
+{
|
|
|
+ int test()
|
|
|
+ {
|
|
|
+ int Error = 0;
|
|
|
+
|
|
|
+ glm::uint32 const A = glm::ceilPowerOfTwo(7u);
|
|
|
+ Error += A == 8u ? 0 : 1;
|
|
|
+
|
|
|
+ glm::uint32 const B = glm::ceilPowerOfTwo(15u);
|
|
|
+ Error += B == 16u ? 0 : 1;
|
|
|
+
|
|
|
+ glm::uint32 const C = glm::ceilPowerOfTwo(31u);
|
|
|
+ Error += C == 32u ? 0 : 1;
|
|
|
+
|
|
|
return Error;
|
|
|
}
|
|
|
}//namespace ceilPowerOfTwo
|
|
|
@@ -406,8 +472,11 @@ int main()
|
|
|
int Error(0);
|
|
|
|
|
|
Error += isPowerOfTwo::test();
|
|
|
+ Error += floorPowerOfTwo::test();
|
|
|
+ Error += roundPowerOfTwo::test();
|
|
|
Error += ceilPowerOfTwo::test();
|
|
|
-
|
|
|
+ Error += ceilPowerOfTwo_advanced::test();
|
|
|
+
|
|
|
# ifdef NDEBUG
|
|
|
Error += ceilPowerOfTwo::perf();
|
|
|
# endif//NDEBUG
|