Added floorLog2 tests.

This commit is contained in:
Бранимир Караџић
2023-12-11 21:36:34 -08:00
parent 3e5d611007
commit 00ffdf75af

View File

@@ -104,6 +104,72 @@ TEST_CASE("ceilLog2", "[math]")
}
}
TEST_CASE("floorLog2", "[math]")
{
REQUIRE(0 == bx::floorLog2(-1) );
REQUIRE(0 == bx::floorLog2(0) );
REQUIRE(0 == bx::floorLog2(1) );
REQUIRE(1 == bx::floorLog2(2) );
REQUIRE(2 == bx::floorLog2(4) );
REQUIRE(3 == bx::floorLog2(8) );
REQUIRE(4 == bx::floorLog2(16) );
REQUIRE(5 == bx::floorLog2(32) );
REQUIRE(6 == bx::floorLog2(64) );
REQUIRE(7 == bx::floorLog2(128) );
REQUIRE(8 == bx::floorLog2(256) );
{
uint32_t ii = 0;
for (; ii < 8; ++ii)
{
REQUIRE(ii == bx::floorLog2(uint8_t(1<<ii) ) );
REQUIRE(ii == bx::floorLog2(uint16_t(1<<ii) ) );
REQUIRE(ii == bx::floorLog2(uint32_t(1<<ii) ) );
REQUIRE(ii == bx::floorLog2(uint64_t(1llu<<ii) ) );
}
for (; ii < 16; ++ii)
{
REQUIRE(ii == bx::floorLog2(uint16_t(1<<ii) ) );
REQUIRE(ii == bx::floorLog2(uint32_t(1<<ii) ) );
REQUIRE(ii == bx::floorLog2(uint64_t(1llu<<ii) ) );
}
for (; ii < 32; ++ii)
{
REQUIRE(ii == bx::floorLog2(uint32_t(1<<ii) ) );
REQUIRE(ii == bx::floorLog2(uint64_t(1llu<<ii) ) );
}
for (; ii < 64; ++ii)
{
REQUIRE(ii == bx::floorLog2(uint64_t(1llu<<ii) ) );
}
}
}
TEST_CASE("ceil/floorLog2", "[math]")
{
{
uint32_t prev = 0;
uint32_t next = 0;
for (uint32_t ii = 0; ii < (1<<18); ++ii)
{
if (bx::isPowerOf2(ii) )
{
REQUIRE(bx::ceilLog2(ii) == bx::floorLog2(ii) );
prev = next;
++next;
}
else
{
REQUIRE(prev == bx::floorLog2(ii) );
REQUIRE(next == bx::ceilLog2(ii) );
}
}
}
}
TEST_CASE("countTrailingZeros", "[math]")
{
REQUIRE( 0 == bx::countTrailingZeros<uint8_t >(1) );