BitVecEditDistance
- Function
- August 22, 2025
Table of Contents
BitVecEditDistance
BitVecEditDistance
Description
Calculate edit distance between two bitvectors. Edit distance is minimum number of single-bit operations to transform one into the other.
Parameters
Name | Direction | Description |
---|---|---|
bv1 | in | First bitvector |
bv2 | in | Second bitvector |
Usage example (from documentation)
u64 distance = BitVecEditDistance(&bv1, &bv2);
Usage example (Cross-references)
- In
BitVec.c:1243
:
}
u64 BitVecEditDistance(BitVec *bv1, BitVec *bv2) {
ValidateBitVec(bv1);
ValidateBitVec(bv2);
// Test BitVecEditDistance basic functionality
bool test_bitvec_edit_distance_basic(void) {
printf("Testing BitVecEditDistance basic functionality\n");
BitVec bv1 = BitVecInit();
BitVecPush(&bv2, true);
u64 distance = BitVecEditDistance(&bv1, &bv2);
result = result && (distance == 0);
BitVecPush(&bv2, true);
distance = BitVecEditDistance(&bv1, &bv2);
result = result && (distance == 1);
BitVecPush(&bv2, false); // Extra bit
distance = BitVecEditDistance(&bv1, &bv2);
result = result && (distance == 1);
// Test BitVecEditDistance edge cases
bool test_bitvec_edit_distance_edge_cases(void) {
printf("Testing BitVecEditDistance edge cases\n");
BitVec bv1 = BitVecInit();
// Test empty to empty
u64 distance = BitVecEditDistance(&bv1, &bv2);
result = result && (distance == 0);
BitVecPush(&bv2, false);
distance = BitVecEditDistance(&bv1, &bv2);
result = result && (distance == 2);
// Test non-empty to empty
distance = BitVecEditDistance(&bv2, &bv1);
result = result && (distance == 2);
BitVecPush(&small2, i % 3 == 0);
}
u64 edit_dist = BitVecEditDistance(&small1, &small2);
result = result && (hamming < 1000);
bool test_bitvec_edit_distance_null_bv1(void) {
printf("Testing BitVecEditDistance(NULL, bv2) - should fatal\n");
BitVec bv2 = BitVecInit();
BitVecPush(&bv2, true);
BitVec bv2 = BitVecInit();
BitVecPush(&bv2, true);
BitVecEditDistance(NULL, &bv2);
BitVecDeinit(&bv2);
return true;
bool test_bitvec_edit_distance_null_bv2(void) {
printf("Testing BitVecEditDistance(bv1, NULL) - should fatal\n");
BitVec bv1 = BitVecInit();
BitVecPush(&bv1, true);
BitVec bv1 = BitVecInit();
BitVecPush(&bv1, true);
BitVecEditDistance(&bv1, NULL);
BitVecDeinit(&bv1);
return true;