BitVecCountOnes
- Function
- August 22, 2025
Table of Contents
BitVecCountOnes
BitVecCountOnes
Description
Count number of bits set to 1 in bitvector.
Parameters
Name | Direction | Description |
---|---|---|
bv | in | Bitvector to count ones in |
Usage example (from documentation)
u64 ones = BitVecCountOnes(&flags);
Usage example (Cross-references)
- In
BitVec.c:436
:
}
u64 BitVecCountOnes(BitVec *bitvec) {
ValidateBitVec(bitvec);
if (!bitvec->data)
- In
BitVec.c:451
:
u64 BitVecCountZeros(BitVec *bitvec) {
ValidateBitVec(bitvec);
return bitvec->length - BitVecCountOnes(bitvec);
}
- In
BitVec.c:616
:
ValidateBitVec(bv2);
u64 weight1 = BitVecCountOnes(bv1);
u64 weight2 = BitVecCountOnes(bv2);
- In
BitVec.c:617
:
u64 weight1 = BitVecCountOnes(bv1);
u64 weight2 = BitVecCountOnes(bv2);
if (weight1 < weight2) {
- In
BitVec.c:1214
:
u64 dot_product = BitVecDotProduct(bv1, bv2);
u64 ones1 = BitVecCountOnes(bv1);
u64 ones2 = BitVecCountOnes(bv2);
- In
BitVec.c:1215
:
u64 dot_product = BitVecDotProduct(bv1, bv2);
u64 ones1 = BitVecCountOnes(bv1);
u64 ones2 = BitVecCountOnes(bv2);
if (ones1 == 0 || ones2 == 0) {
- In
BitVec.c:1333
:
return 0.0;
u64 ones = BitVecCountOnes(bv);
u64 zeros = bv->length - ones;
// Count true and false bits
bool result = (BitVecCountOnes(&bv) == 3) && (BitVecCountZeros(&bv) == 2);
BitVecDeinit(&bv);
// Test empty bitvector
result = result && (BitVecCountOnes(&bv) == 0);
result = result && (BitVecCountZeros(&bv) == 0);
// Test single bit
BitVecPush(&bv, true);
result = result && (BitVecCountOnes(&bv) == 1);
result = result && (BitVecCountZeros(&bv) == 0);
BitVecPush(&bv, true);
}
result = result && (BitVecCountOnes(&bv) == 100);
result = result && (BitVecCountZeros(&bv) == 0);
// Count and verify
result = result && (BitVecCountOnes(&bv) == 3);
result = result && (BitVecCountZeros(&bv) == 2);
BitVecFlip(&bv, 3); // F -> T
result = result && (BitVecCountOnes(&bv) == 5);
result = result && (BitVecCountZeros(&bv) == 0);
// Verify counts
result = result && (BitVecCountOnes(&bv) == 500);
result = result && (BitVecCountZeros(&bv) == 500);
BitVecFlip(&bv, 999); // F -> T
result = result && (BitVecCountOnes(&bv) == 500);
result = result && (BitVecCountZeros(&bv) == 500);
// Test count operations
result = result && (BitVecCountOnes(&bv) == 1);
result = result && (BitVecCountZeros(&bv) == 1);
}
result = result && (BitVecCountOnes(&bv) == expected_true_count);
result = result && (BitVecCountZeros(&bv) == (size - expected_true_count));
}
result = result && (BitVecCountZeros(&bv) == 64);
result = result && (BitVecCountOnes(&bv) == 0);
// Test all ones
BitVecPush(&bv, true);
}
result = result && (BitVecCountOnes(&bv) == 64);
result = result && (BitVecCountZeros(&bv) == 0);
BitVecPush(&bv, i % 2 == 0);
}
result = result && (BitVecCountOnes(&bv) == 32);
result = result && (BitVecCountZeros(&bv) == 32);
BitVecPush(&bv, i % 8 == 0);
}
result = result && (BitVecCountOnes(&bv) == 8);
result = result && (BitVecCountZeros(&bv) == 56);
// Test NULL bitvec pointer - should abort
BitVecCountOnes(NULL);
return false;
// Test counting
bool result = (BitVecCountOnes(&bv) == 3);
result = result && (BitVecCountZeros(&bv) == 4);
BitVecPush(&bv, true);
result = result && (BitVecCountOnes(&bv) == 3);
result = result && (BitVecCountZeros(&bv) == 0);
// Test count on empty bitvec
result = result && (BitVecCountOnes(&bv) == 0);
result = result && (BitVecCountZeros(&bv) == 0);
// Test count with single bit
BitVecPush(&bv, true);
result = result && (BitVecCountOnes(&bv) == 1);
result = result && (BitVecCountZeros(&bv) == 0);
BitVecClear(&bv);
BitVecPush(&bv, false);
result = result && (BitVecCountOnes(&bv) == 0);
result = result && (BitVecCountZeros(&bv) == 1);
BitVecPush(&bv, true);
}
result = result && (BitVecCountOnes(&bv) == 1000);
result = result && (BitVecCountZeros(&bv) == 0);
}
result = result && (BitVecCountOnes(&bv) == 0);
result = result && (BitVecCountZeros(&bv) == 100);
}
result = result && (BitVecCountOnes(&bv) == 100);
result = result && (BitVecCountZeros(&bv) == 0);
}
result = result && (BitVecCountOnes(&bv) == 50);
result = result && (BitVecCountZeros(&bv) == 50);
// Test NULL bitvec pointer - should abort
BitVecCountOnes(NULL);
return false;