in src/main/java/org/apache/datasketches/req/ReqSketch.java [379:403]
public ReqSketch merge(final ReqSketch other) {
if (other == null || other.isEmpty()) { return this; }
if (other.hra != hra) {
throw new SketchesArgumentException(
"Both sketches must have the same HighRankAccuracy setting.");
}
totalN += other.totalN;
//update min, max items, n
if (Float.isNaN(minItem) || other.minItem < minItem) { minItem = other.minItem; }
if (Float.isNaN(maxItem) || other.maxItem > maxItem) { maxItem = other.maxItem; }
//Grow until self has at least as many compactors as other
while (getNumLevels() < other.getNumLevels()) { grow(); }
//Merge the items in all height compactors
for (int i = 0; i < other.getNumLevels(); i++) {
compactors.get(i).merge(other.compactors.get(i));
}
maxNomSize = computeMaxNomSize();
retItems = computeTotalRetainedItems();
if (retItems >= maxNomSize) {
compress();
}
assert retItems < maxNomSize;
reqSV = null;
return this;
}