in src/main/java/org/apache/datasketches/characterization/uniquecount/BaseAccuracyProfile.java [174:220]
private 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 largeUniques = q.uniques;
final double trueUniques = q.trueValue;
final double meanEst = q.sumEst / cumTrials;
final double meanRelErr = q.sumRelErr / cumTrials;
final double meanSqErr = q.sumSqErr / cumTrials; //intermediate value
final double normMeanSqErr = meanSqErr / (trueUniques * trueUniques); //intermediate value
final double rmsRelErr = Math.sqrt(normMeanSqErr); //a.k.a. Normalized RMS Error or NRMSE
q.rmsre = rmsRelErr;
final int bytes = q.bytes;
//OUTPUT
if (intersectTest) {
sb.append(largeUniques).append(TAB);
}
sb.append(trueUniques).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] / trueUniques - 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);
}
}