public static Bloomfilter union_(Bloomfilter a, Bloomfilter b) { Debug.Assert(a.numberOfBits == b.numberOfBits); Bloomfilter result = new Bloomfilter(a.numberOfBits); result.filter = StaticBitset.or_(a.filter, b.filter); return(result); }
public static StaticBitset or_(StaticBitset a, StaticBitset b) { Debug.Assert(a.numberOfBits == b.numberOfBits); StaticBitset result = new StaticBitset(a.numberOfBits); for (int i = 0; i < result.array.Length; i++) { result.array[i] = a.array[i] | b.array[i]; } return(result); }
public static bool existsOverlap(StaticBitset a, StaticBitset b) { Debug.Assert(a.numberOfBits == b.numberOfBits); StaticBitset result = new StaticBitset(a.numberOfBits); for (int i = 0; i < result.array.Length; i++) { if ((a.array[i] & b.array[i]) != 0) { return(true); } } return(false); }
public Bloomfilter(uint numberOfBits) { this.numberOfBits = numberOfBits; filter = new StaticBitset(numberOfBits); }
public static bool overlap(Bloomfilter a, Bloomfilter b) { Debug.Assert(a.numberOfBits == b.numberOfBits); return(StaticBitset.existsOverlap(a.filter, b.filter)); }