in datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/Util.java [93:108]
public static long binarySearchLongs(final Memory mem, final long fromLongIndex,
final long toLongIndex, final long key) {
ResourceImpl.checkBounds(fromLongIndex << 3, (toLongIndex - fromLongIndex) << 3, mem.getCapacity());
long low = fromLongIndex;
long high = toLongIndex - 1L;
while (low <= high) {
final long mid = (low + high) >>> 1;
final long midVal = mem.getLong(mid << 3);
if (midVal < key) { low = mid + 1; }
else if (midVal > key) { high = mid - 1; }
else { return mid; } // key found
}
return -(low + 1); // key not found.
}