libmoost
|
00001 /* vim:set ts=3 sw=3 sts=3 et: */ 00031 #include <boost/test/unit_test.hpp> 00032 #include <boost/cstdint.hpp> 00033 00034 #include "../../include/moost/math/integer/log2.hpp" 00035 00036 using namespace moost; 00037 00038 BOOST_AUTO_TEST_SUITE(int_log2_test) 00039 00040 BOOST_AUTO_TEST_CASE(int_log2_test) 00041 { 00042 BOOST_CHECK_EQUAL(math::integer::log2(1U), 0); 00043 BOOST_CHECK_EQUAL(math::integer::log2_compat(1U), 0); 00044 00045 BOOST_CHECK_EQUAL(math::integer::log2(2U), 1); 00046 BOOST_CHECK_EQUAL(math::integer::log2_compat(2U), 1); 00047 00048 BOOST_CHECK_EQUAL(math::integer::log2(3U), 1); 00049 BOOST_CHECK_EQUAL(math::integer::log2_compat(3U), 1); 00050 00051 BOOST_CHECK_EQUAL(math::integer::log2(4U), 2); 00052 BOOST_CHECK_EQUAL(math::integer::log2_compat(4U), 2); 00053 00054 BOOST_CHECK_EQUAL(math::integer::log2(65535U), 15); 00055 BOOST_CHECK_EQUAL(math::integer::log2_compat(65535U), 15); 00056 00057 BOOST_CHECK_EQUAL(math::integer::log2(65535UL), 15); 00058 BOOST_CHECK_EQUAL(math::integer::log2_compat(65535UL), 15); 00059 00060 BOOST_CHECK_EQUAL(math::integer::log2(65536UL), 16); 00061 BOOST_CHECK_EQUAL(math::integer::log2_compat(65536UL), 16); 00062 00063 BOOST_CHECK_EQUAL(math::integer::log2(65537UL), 16); 00064 BOOST_CHECK_EQUAL(math::integer::log2_compat(65537UL), 16); 00065 00066 BOOST_CHECK_EQUAL(math::integer::log2(0xFFFFFFFFUL), 31); 00067 BOOST_CHECK_EQUAL(math::integer::log2_compat(0xFFFFFFFFUL), 31); 00068 00069 BOOST_CHECK_EQUAL(math::integer::log2(UINT64_C(0xFFFFFFFF)), 31); 00070 BOOST_CHECK_EQUAL(math::integer::log2_compat(UINT64_C(0xFFFFFFFF)), 31); 00071 00072 BOOST_CHECK_EQUAL(math::integer::log2(UINT64_C(0x100000000)), 32); 00073 BOOST_CHECK_EQUAL(math::integer::log2_compat(UINT64_C(0x100000000)), 32); 00074 00075 BOOST_CHECK_EQUAL(math::integer::log2(UINT64_C(0x100000001)), 32); 00076 BOOST_CHECK_EQUAL(math::integer::log2_compat(UINT64_C(0x100000001)), 32); 00077 00078 BOOST_CHECK_EQUAL(math::integer::log2(UINT64_C(0xFFFFFFFFFFFFFFFF)), 63); 00079 BOOST_CHECK_EQUAL(math::integer::log2_compat(UINT64_C(0xFFFFFFFFFFFFFFFF)), 63); 00080 } 00081 00082 BOOST_AUTO_TEST_SUITE_END()