Skip to content

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)
    }
    
    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