/// <summary> /// Returns the popcount or cardinality of "a and not b" /// or "intersection(a, not(b))". /// Neither set is modified. /// </summary> public static long AndNotCount(OpenBitSet a, OpenBitSet b) { long tot = BitUtil.Pop_AndNot(a.m_bits, b.m_bits, 0, Math.Min(a.m_wlen, b.m_wlen)); if (a.m_wlen > b.m_wlen) { tot += BitUtil.Pop_Array(a.m_bits, b.m_wlen, a.m_wlen - b.m_wlen); } return(tot); }
/// <summary> /// Returns the popcount or cardinality of "a and not b" or /// "intersection(a, not(b))". Neither set is modified. /// </summary> public static long AndNotCount(FixedBitSet a, FixedBitSet b) { long tot = BitUtil.Pop_AndNot(a.bits, b.bits, 0, Math.Min(a.numWords, b.numWords)); if (a.numWords > b.numWords) { tot += BitUtil.Pop_Array(a.bits, b.numWords, a.numWords - b.numWords); } return(tot); }