@@ -8,34 +8,52 @@ 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 ));
25+ ASSERT_EQ (1U << 31 , internal::bit_ceil (1U << 31 ));
2526}
2627
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 ()));
28+ TEST (BitTest, CountrZero) {
29+ ASSERT_EQ (0 , internal::countr_zero (1U ));
30+ ASSERT_EQ (1 , internal::countr_zero (2U ));
31+ ASSERT_EQ (0 , internal::countr_zero (3U ));
32+ ASSERT_EQ (2 , internal::countr_zero (4U ));
33+ ASSERT_EQ (0 , internal::countr_zero (5U ));
34+ ASSERT_EQ (1 , internal::countr_zero (6U ));
35+ ASSERT_EQ (0 , internal::countr_zero (7U ));
36+ ASSERT_EQ (3 , internal::countr_zero (8U ));
37+ ASSERT_EQ (0 , internal::countr_zero (9U ));
38+ ASSERT_EQ (30 , internal::countr_zero (1U << 30 ));
39+ ASSERT_EQ (0 , internal::countr_zero ((1U << 31 ) - 1 ));
40+ ASSERT_EQ (31 , internal::countr_zero (1U << 31 ));
41+ ASSERT_EQ (0 , internal::countr_zero (std::numeric_limits<unsigned int >::max ()));
42+ }
43+
44+ TEST (BitTest, CountrZeroConstexpr) {
45+ ASSERT_EQ (0 , internal::countr_zero_constexpr (1U ));
46+ ASSERT_EQ (1 , internal::countr_zero_constexpr (2U ));
47+ ASSERT_EQ (0 , internal::countr_zero_constexpr (3U ));
48+ ASSERT_EQ (2 , internal::countr_zero_constexpr (4U ));
49+ ASSERT_EQ (0 , internal::countr_zero_constexpr (5U ));
50+ ASSERT_EQ (1 , internal::countr_zero_constexpr (6U ));
51+ ASSERT_EQ (0 , internal::countr_zero_constexpr (7U ));
52+ ASSERT_EQ (3 , internal::countr_zero_constexpr (8U ));
53+ ASSERT_EQ (0 , internal::countr_zero_constexpr (9U ));
54+ ASSERT_EQ (30 , internal::countr_zero_constexpr (1U << 30 ));
55+ ASSERT_EQ (0 , internal::countr_zero_constexpr ((1U << 31 ) - 1 ));
56+ ASSERT_EQ (31 , internal::countr_zero_constexpr (1U << 31 ));
57+ ASSERT_EQ (0 ,
58+ internal::countr_zero_constexpr (std::numeric_limits<unsigned int >::max ()));
4159}
0 commit comments