in src/main/java/org/apache/datasketches/quantilescommon/GenericInequalitySearch.java [198:244]
private static <T> int resolve(final T[] arr, final int lo, final int hi, final T v,
final Inequality crit, final Comparator<T> comparator) {
int result = 0;
switch (crit) {
case LT: {
result = (lo == hi)
? (comparator.compare(v, arr[lo]) > 0 ? lo : -1)
: (comparator.compare(v, arr[hi]) > 0
? hi
: (comparator.compare(v, arr[lo]) > 0 ? lo : -1));
break;
}
case LE: {
result = (lo == hi)
? (comparator.compare(v, arr[lo]) >= 0 ? lo : -1)
: (comparator.compare(v, arr[hi]) >= 0
? hi
: (comparator.compare(v, arr[lo]) >= 0 ? lo : -1));
break;
}
case EQ: {
result = (lo == hi)
? (comparator.compare(v, arr[lo]) == 0 ? lo : -1)
: (comparator.compare(v, arr[hi]) == 0
? hi
: (comparator.compare(v, arr[lo]) == 0 ? lo : -1));
break;
}
case GE: {
result = (lo == hi)
? (comparator.compare(v, arr[lo]) <= 0 ? lo : -1)
: (comparator.compare(v, arr[lo]) <= 0
? lo
: (comparator.compare(v, arr[hi]) <= 0 ? hi : -1));
break;
}
case GT: {
result = (lo == hi)
? (comparator.compare(v, arr[lo]) < 0 ? lo : -1)
: (comparator.compare(v, arr[lo]) < 0
? lo
: (comparator.compare(v, arr[hi]) < 0 ? hi : -1));
break;
}
}
return result;
}