in src/main/java/org/apache/datasketches/characterization/uniquecount/BaseAccuracyProfile.java [162:205]
private static void process(final boolean getSize, final AccuracyStats[] qArr,
final int cumTrials, final StringBuilder sb) {
final int points = qArr.length;
sb.setLength(0);
for (int pt = 0; pt < points; pt++) {
final AccuracyStats q = qArr[pt];
final double uniques = q.trueValue;
final double meanEst = q.sumEst / cumTrials;
final double meanRelErr = q.sumRelErr / cumTrials;
final double meanSqErr = q.sumSqErr / cumTrials; //intermediate
final double normMeanSqErr = meanSqErr / (1.0 * uniques * uniques); //intermediate
final double rmsRelErr = Math.sqrt(normMeanSqErr);
q.rmsre = rmsRelErr;
final int bytes = q.bytes;
//OUTPUT
//sb.setLength(0);
sb.append(uniques).append(TAB);
//Sketch meanEst, meanEstErr, norm RMS Err
sb.append(meanEst).append(TAB);
sb.append(meanRelErr).append(TAB);
sb.append(rmsRelErr).append(TAB);
//TRIALS
sb.append(cumTrials).append(TAB);
//Quantiles
final double[] quants = qArr[pt].qsk.getQuantiles(GAUSSIANS_4SD);
final int quantsLen = quants.length;
for (int i = 0; i < quantsLen; i++) {
sb.append(quants[i] / uniques - 1.0).append(TAB);
}
if (getSize) {
sb.append(bytes).append(TAB);
sb.append(rmsRelErr * Math.sqrt(bytes));
} else {
sb.append(0).append(TAB);
sb.append(0);
}
sb.append(LS);
}
}