Skip to content
BitVecDisjoint

BitVecDisjoint

BitVecDisjoint

Description

Check if two bitvectors are disjoint (have no common 1-bits).

Parameters

Name Direction Description
bv1 in First bitvector
bv2 in Second bitvector

Usage example (from documentation)

  bool disjoint = BitVecDisjoint(&set1, &set2);

Returns

true if bitvectors have no common 1-bits

Usage example (Cross-references)

Usage examples (Cross-references)
    }
    
    bool BitVecDisjoint(BitVec *bv1, BitVec *bv2) {
        ValidateBitVec(bv1);
        ValidateBitVec(bv2);
    
    bool BitVecOverlaps(BitVec *bv1, BitVec *bv2) {
        return !BitVecDisjoint(bv1, bv2);
    }
    // Test BitVecDisjoint and BitVecIntersects functions
    bool test_bitvec_disjoint_intersects(void) {
        WriteFmt("Testing BitVecDisjoint and BitVecIntersects\n");
    
        BitVec bv1 = BitVecInit();
    
        // Should be disjoint and not intersect
        bool result = BitVecDisjoint(&bv1, &bv2);
        result      = result && !BitVecOverlaps(&bv1, &bv2);
    
        // Should not be disjoint and should intersect
        result = result && !BitVecDisjoint(&bv1, &bv2);
        result = result && BitVecOverlaps(&bv1, &bv2);
        BitVecClear(&bv1);
        BitVecClear(&bv2);
        result = result && BitVecDisjoint(&bv1, &bv2);
        result = result && !BitVecOverlaps(&bv1, &bv2);
        // Test with empty sets
        result = result && !BitVecOverlaps(&bv1, &bv2);
        result = result && BitVecDisjoint(&bv1, &bv2);
    
        // Test single bit sets
        // Test set operations on large vectors
        bool overlaps = BitVecOverlaps(&large1, &large2);
        bool disjoint = BitVecDisjoint(&large1, &large2);
        result        = result && (overlaps != disjoint); // Should be opposite
Last updated on