in src/main/java/org/apache/datasketches/characterization/quantiles/DoublesSketchAccuracyProfile.java [68:96]
public double doTrial() {
shuffle(inputValues);
// build sketch
final UpdateDoublesSketch updateSketch = builder.build();
for (int i = 0; i < inputValues.length; i++) {
updateSketch.update(inputValues[i]);
}
final DoublesSketch sketch = useCompact ? updateSketch.compact() : updateSketch;
// query sketch and gather results
double maxRankError = 0;
if (useBulk) {
final double[] estRanks = sketch.getCDF(queryValues);
for (int i = 0; i < inputValues.length; i++) {
final double trueRank = (double) i / inputValues.length;
maxRankError = Math.max(maxRankError, Math.abs(trueRank - estRanks[i]));
}
} else {
for (int i = 0; i < inputValues.length; i++) {
final double trueRank = (double) i / inputValues.length;
//final double estRank = sketch.getRank(i); // this was not released yet
final double estRank = sketch.getCDF(new double[] {i})[0];
maxRankError = Math.max(maxRankError, Math.abs(trueRank - estRank));
}
}
return maxRankError;
}