BitVecEntropy
Description
Calculate information entropy of a bitvector. Entropy measures the randomness/information content of the bit pattern.
Parameters
| Name | Direction | Description |
|---|---|---|
bv |
in | Bitvector to analyze |
Usage example (from documentation)
double entropy = BitVecEntropy(&flags);Success
Returns the Shannon entropy of the bit pattern, in bits, in [0.0, 1.0]. The bitvector is not modified.
Failure
Returns 0.0 for an empty bitvector or one whose bits are all equal; the caller cannot distinguish that from a true zero entropy.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
BitVec.c:1591:
}
double BitVecEntropy(BitVec *bv) {
ValidateBitVec(bv); DefaultAllocator alloc = DefaultAllocatorInit();
WriteFmt("Testing BitVecEntropy basic functionality\n");
BitVec bv = BitVecInit(ALLOCATOR_OF(&alloc)); BitVecPush(&bv, false);
double entropy = BitVecEntropy(&bv);
result = result && (F64Abs(entropy - 1.0) < 0.001); BitVecPush(&bv, true);
entropy = BitVecEntropy(&bv);
result = result && (entropy == 0.0); DefaultAllocator alloc = DefaultAllocatorInit();
WriteFmt("Testing BitVecEntropy edge cases\n");
BitVec bv = BitVecInit(ALLOCATOR_OF(&alloc));
// Test empty bitvector
double entropy = BitVecEntropy(&bv);
result = result && (entropy == 0.0); // Test single bit
BitVecPush(&bv, true);
entropy = BitVecEntropy(&bv);
result = result && (entropy == 0.0); u64 dot_prod = BitVecDotProduct(&bv1, &bv2);
double correlation = BitVecCorrelation(&bv1, &bv2);
double entropy1 = BitVecEntropy(&bv1);
int align_score = BitVecAlignmentScore(&bv1, &bv2, 1, -1);
u64 best_align = BitVecBestAlignment(&bv1, &bv2);
bool test_bitvec_entropy_null(void) {
WriteFmt("Testing BitVecEntropy(NULL) - should fatal\n");
BitVecEntropy(NULL);
return true; bool test_bitvec_entropy_null(void) {
WriteFmt("Testing BitVecEntropy(NULL) - should fatal\n");
BitVecEntropy(NULL);
return true;
}
Last updated on