Add bitset_ctz function

This commit is contained in:
Patrick Pelissier committed 2022-08-29 19:31:19 +02:00
1 parent 6b994c2928
commit cc7fc66899
2 files changed
+68

No files matched your search

+41
View File
@@ -377,6 +377,47 @@ static void test_clz(void)
bitset_set_str(s1, "[10000011100000110010101010110000011111111111111110000001110001110001110001110000]");
assert(bitset_popcount(s1) == 40);
}
M_LET(s1, bitset_t) {
bitset_set_str(s1, "[00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000]");
assert(bitset_ctz(s1) == 116);
bitset_set_str(s1, "[10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000]");
assert(bitset_ctz(s1) == 0);
bitset_set_str(s1, "[01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000]");
assert(bitset_ctz(s1) == 1);
bitset_set_str(s1, "[00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001]");
assert(bitset_ctz(s1) == 115);
bitset_set_str(s1, "[00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010]");
assert(bitset_ctz(s1) == 114);
bitset_set_str(s1, "[000001]");
assert(bitset_ctz(s1) == 5);
bitset_set_str(s1, "[00000000000000000000000000000000000000000000000000000000000000001]");
assert(bitset_ctz(s1) == 64);
bitset_set_str(s1, "[000000000000000000000000000000000000000000000000000000000000000010000]");
assert(bitset_ctz(s1) == 64);
bitset_set_str(s1, "[0000000000000000000000000000000000000000000000000000000000000001]");
assert(bitset_ctz(s1) == 63);
bitset_set_str(s1, "[0000000000000000000000000000000000000000000000000000000000000001000]");
assert(bitset_ctz(s1) == 63);
bitset_set_str(s1, "[000000000000000000000000000000000000000000000000000000000000000001]");
assert(bitset_ctz(s1) == 65);
bitset_set_str(s1, "[0000000000000000000000000000000000000000000000000000000000000000010000]");
assert(bitset_ctz(s1) == 65);
bitset_set_str(s1, "[00001000001110000011001010101011000001111111111111111000000111000111000111000111000]");
assert(bitset_ctz(s1) == 4);
bitset_set_str(s1, "[000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001]");
assert(bitset_ctz(s1) == 128);
bitset_set_str(s1, "[00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001]");
assert(bitset_ctz(s1) == 127);
bitset_set_str(s1, "[0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001]");
assert(bitset_ctz(s1) == 129);
bitset_set_str(s1, "[0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000100000000000000000001]");
assert(bitset_ctz(s1) == 128);
bitset_set_str(s1, "[000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000010000000000000000001000]");
assert(bitset_ctz(s1) == 127);
bitset_set_str(s1, "[00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000011000000000000000000000000]");
assert(bitset_ctz(s1) == 129);
}
}
int main(void)