private QuantileResult quantileDetails(
double level,
DoubleArray sample,
boolean isExtrapolated,
boolean isEs) {
int nbData = sample.size();
double[] w = weights(nbData);
double[] s = sample.toArray();
DoubleArrayMath.sortPairs(s, w);
double[] s2 = sample.toArray();
double[] order = new double[s2.length];
for (int i = 0; i < s2.length; i++) {
order[i] = i;
}
DoubleArrayMath.sortPairs(s2, order);
double runningWeight = 0.0d;
int index = nbData;
while (runningWeight < 1.0d - level) {
index--;
runningWeight += w[index];
}
if (isEs) {
return esFromIndexRunningWeight(index, runningWeight, s2, w, order, level);
}
return quantileFromIndexRunningWeight(index, runningWeight, isExtrapolated, s2, w, order, level);
}