@@ -8,34 +8,51 @@ using namespace atcoder;
88using ll = long long ;
99using ull = unsigned long long ;
1010
11- TEST (BitTest, CeilPow2 ) {
12- ASSERT_EQ (0 , internal::ceil_pow2 ( 0 ));
13- ASSERT_EQ (0 , internal::ceil_pow2 ( 1 ));
14- ASSERT_EQ (1 , internal::ceil_pow2 ( 2 ));
15- ASSERT_EQ (2 , internal::ceil_pow2 ( 3 ));
16- ASSERT_EQ (2 , internal::ceil_pow2 ( 4 ));
17- ASSERT_EQ (3 , internal::ceil_pow2 ( 5 ));
18- ASSERT_EQ (3 , internal::ceil_pow2 ( 6 ));
19- ASSERT_EQ (3 , internal::ceil_pow2 ( 7 ));
20- ASSERT_EQ (3 , internal::ceil_pow2 ( 8 ));
21- ASSERT_EQ (4 , internal::ceil_pow2 ( 9 ));
22- ASSERT_EQ (30 , internal::ceil_pow2 ( 1 << 30 ));
23- ASSERT_EQ (31 , internal::ceil_pow2 (( 1 << 30 ) + 1 ));
24- ASSERT_EQ (31 , internal::ceil_pow2 (std::numeric_limits< int >:: max () ));
11+ TEST (BitTest, BitCeil ) {
12+ ASSERT_EQ (1 , internal::bit_ceil ( 0U ));
13+ ASSERT_EQ (1 , internal::bit_ceil ( 1U ));
14+ ASSERT_EQ (2 , internal::bit_ceil ( 2U ));
15+ ASSERT_EQ (4 , internal::bit_ceil ( 3U ));
16+ ASSERT_EQ (4 , internal::bit_ceil ( 4U ));
17+ ASSERT_EQ (8 , internal::bit_ceil ( 5U ));
18+ ASSERT_EQ (8 , internal::bit_ceil ( 6U ));
19+ ASSERT_EQ (8 , internal::bit_ceil ( 7U ));
20+ ASSERT_EQ (8 , internal::bit_ceil ( 8U ));
21+ ASSERT_EQ (16 , internal::bit_ceil ( 9U ));
22+ ASSERT_EQ (1U << 30 , internal::bit_ceil ( 1U << 30 ));
23+ ASSERT_EQ (1U << 31 , internal::bit_ceil (( 1U << 30 ) + 1 ));
24+ ASSERT_EQ (1U << 31 , internal::bit_ceil (( 1U << 31 ) - 1 ));
2525}
2626
27- TEST (BitTest, BSF) {
28- ASSERT_EQ (0 , internal::bsf (1 ));
29- ASSERT_EQ (1 , internal::bsf (2 ));
30- ASSERT_EQ (0 , internal::bsf (3 ));
31- ASSERT_EQ (2 , internal::bsf (4 ));
32- ASSERT_EQ (0 , internal::bsf (5 ));
33- ASSERT_EQ (1 , internal::bsf (6 ));
34- ASSERT_EQ (0 , internal::bsf (7 ));
35- ASSERT_EQ (3 , internal::bsf (8 ));
36- ASSERT_EQ (0 , internal::bsf (9 ));
37- ASSERT_EQ (30 , internal::bsf (1U << 30 ));
38- ASSERT_EQ (0 , internal::bsf ((1U << 31 ) - 1 ));
39- ASSERT_EQ (31 , internal::bsf (1U << 31 ));
40- ASSERT_EQ (0 , internal::bsf (std::numeric_limits<unsigned int >::max ()));
27+ TEST (BitTest, CountrZero) {
28+ ASSERT_EQ (0 , internal::countr_zero (1U ));
29+ ASSERT_EQ (1 , internal::countr_zero (2U ));
30+ ASSERT_EQ (0 , internal::countr_zero (3U ));
31+ ASSERT_EQ (2 , internal::countr_zero (4U ));
32+ ASSERT_EQ (0 , internal::countr_zero (5U ));
33+ ASSERT_EQ (1 , internal::countr_zero (6U ));
34+ ASSERT_EQ (0 , internal::countr_zero (7U ));
35+ ASSERT_EQ (3 , internal::countr_zero (8U ));
36+ ASSERT_EQ (0 , internal::countr_zero (9U ));
37+ ASSERT_EQ (30 , internal::countr_zero (1U << 30 ));
38+ ASSERT_EQ (0 , internal::countr_zero ((1U << 31 ) - 1 ));
39+ ASSERT_EQ (31 , internal::countr_zero (1U << 31 ));
40+ ASSERT_EQ (0 , internal::countr_zero (std::numeric_limits<unsigned int >::max ()));
41+ }
42+
43+ TEST (BitTest, CountrZeroConstexpr) {
44+ ASSERT_EQ (0 , internal::countr_zero_constexpr (1U ));
45+ ASSERT_EQ (1 , internal::countr_zero_constexpr (2U ));
46+ ASSERT_EQ (0 , internal::countr_zero_constexpr (3U ));
47+ ASSERT_EQ (2 , internal::countr_zero_constexpr (4U ));
48+ ASSERT_EQ (0 , internal::countr_zero_constexpr (5U ));
49+ ASSERT_EQ (1 , internal::countr_zero_constexpr (6U ));
50+ ASSERT_EQ (0 , internal::countr_zero_constexpr (7U ));
51+ ASSERT_EQ (3 , internal::countr_zero_constexpr (8U ));
52+ ASSERT_EQ (0 , internal::countr_zero_constexpr (9U ));
53+ ASSERT_EQ (30 , internal::countr_zero_constexpr (1U << 30 ));
54+ ASSERT_EQ (0 , internal::countr_zero_constexpr ((1U << 31 ) - 1 ));
55+ ASSERT_EQ (31 , internal::countr_zero_constexpr (1U << 31 ));
56+ ASSERT_EQ (0 ,
57+ internal::countr_zero_constexpr (std::numeric_limits<unsigned int >::max ()));
4158}
0 commit comments