* @brief Several string processing operations rely on computing integer logarithms. * Failures in such operations will result in wrong `resize` outcomes and heap corruption. */
| 108 | * Failures in such operations will result in wrong `resize` outcomes and heap corruption. |
| 109 | */ |
| 110 | void test_arithmetical_utilities() { |
| 111 | |
| 112 | assert(sz_u64_clz(0x0000000000000001ull) == 63); |
| 113 | assert(sz_u64_clz(0x0000000000000002ull) == 62); |
| 114 | assert(sz_u64_clz(0x0000000000000003ull) == 62); |
| 115 | assert(sz_u64_clz(0x0000000000000004ull) == 61); |
| 116 | assert(sz_u64_clz(0x0000000000000007ull) == 61); |
| 117 | assert(sz_u64_clz(0x8000000000000001ull) == 0); |
| 118 | assert(sz_u64_clz(0xffffffffffffffffull) == 0); |
| 119 | assert(sz_u64_clz(0x4000000000000000ull) == 1); |
| 120 | |
| 121 | assert(sz_size_log2i_nonzero(1) == 0); |
| 122 | assert(sz_size_log2i_nonzero(2) == 1); |
| 123 | assert(sz_size_log2i_nonzero(3) == 1); |
| 124 | |
| 125 | assert(sz_size_log2i_nonzero(4) == 2); |
| 126 | assert(sz_size_log2i_nonzero(5) == 2); |
| 127 | assert(sz_size_log2i_nonzero(7) == 2); |
| 128 | |
| 129 | assert(sz_size_log2i_nonzero(8) == 3); |
| 130 | assert(sz_size_log2i_nonzero(9) == 3); |
| 131 | |
| 132 | assert(sz_size_bit_ceil(0) == 0); |
| 133 | assert(sz_size_bit_ceil(1) == 1); |
| 134 | |
| 135 | assert(sz_size_bit_ceil(2) == 2); |
| 136 | assert(sz_size_bit_ceil(3) == 4); |
| 137 | assert(sz_size_bit_ceil(4) == 4); |
| 138 | |
| 139 | assert(sz_size_bit_ceil(77) == 128); |
| 140 | assert(sz_size_bit_ceil(127) == 128); |
| 141 | assert(sz_size_bit_ceil(128) == 128); |
| 142 | |
| 143 | assert(sz_size_bit_ceil(1000000ull) == (1ull << 20)); |
| 144 | assert(sz_size_bit_ceil(2000000ull) == (1ull << 21)); |
| 145 | assert(sz_size_bit_ceil(4000000ull) == (1ull << 22)); |
| 146 | assert(sz_size_bit_ceil(8000000ull) == (1ull << 23)); |
| 147 | |
| 148 | assert(sz_size_bit_ceil(16000000ull) == (1ull << 24)); |
| 149 | assert(sz_size_bit_ceil(32000000ull) == (1ull << 25)); |
| 150 | assert(sz_size_bit_ceil(64000000ull) == (1ull << 26)); |
| 151 | |
| 152 | assert(sz_size_bit_ceil(128000000ull) == (1ull << 27)); |
| 153 | assert(sz_size_bit_ceil(256000000ull) == (1ull << 28)); |
| 154 | assert(sz_size_bit_ceil(512000000ull) == (1ull << 29)); |
| 155 | |
| 156 | assert(sz_size_bit_ceil(1000000000ull) == (1ull << 30)); |
| 157 | assert(sz_size_bit_ceil(2000000000ull) == (1ull << 31)); |
| 158 | |
| 159 | #if SZ_IS_64BIT_ |
| 160 | assert(sz_size_bit_ceil(4000000000ull) == (1ull << 32)); |
| 161 | assert(sz_size_bit_ceil(8000000000ull) == (1ull << 33)); |
| 162 | assert(sz_size_bit_ceil(16000000000ull) == (1ull << 34)); |
| 163 | |
| 164 | assert(sz_size_bit_ceil((1ull << 62)) == (1ull << 62)); |
| 165 | assert(sz_size_bit_ceil((1ull << 62) + 1) == (1ull << 63)); |
| 166 | assert(sz_size_bit_ceil((1ull << 63)) == (1ull << 63)); |
| 167 | #endif |
no test coverage detected
searching dependent graphs…