in src/main/java/org/apache/datasketches/characterization/hll/HllConfidenceIntervalInverseProfile.java [200:266]
private void processTrialsSet( //process cumulative trials so far
final EstimateStats[] estStatsArr,
final int trials,
final StringBuilder sb
) {
//Reset for this Trials Set
final int totalEsts = trials * srcNlen;
minTgtHits = Integer.MAX_VALUE;
Arrays.fill(sumRanksArr, 0.0);
sb.setLength(0);
sb.append(getHeader()).append(LS);
for (int pt = 0; pt < tgtEstArrLen; pt++) { //output each target est bin per row
final DoublesSketch qsk = estStatsArr[pt].qskN;
final int est = estStatsArr[pt].estimate;
final int hits = (int) qsk.getN();
maxTgtHits = max(maxTgtHits, hits);
minTgtHits = min(minTgtHits, hits);
totalTgtHits += hits;
//start output
sb.append(est).append(TAB);
sb.append(hits).append(TAB);
//output quantiles for each target est bin on the row
final double[] quants = qsk.getQuantiles(GAUSSIANS_3SD);
if (hits > 0) {
for (int i = 0; i < FRACTIONS_3SD_LEN; i++) {
final double relV = quants[i] / est - 1.0;
sumRanksArr[i] += relV;
sb.append(relV).append(TAB);
}
} else {
for (int i = 0; i < FRACTIONS_3SD_LEN; i++) { sb.append("-").append(TAB); }
}
sb.append(LS);
}
//output summary statistics for trials set so far
sb.append(LS);
sb.append("Summary quantiles of N over all target estimates").append(LS);
sb.append(centerTgtEst).append(TAB);
sb.append(totalTgtHits).append(TAB);
final double[] qNarr = qNinTgtEstRange.getQuantiles(GAUSSIANS_3SD);
for (int i = 0; i < FRACTIONS_3SD_LEN; i++) {
final String relV = totalTgtHits > 0 ? Double.toString(qNarr[i] / centerTgtEst - 1.0) : "-";
sb.append(relV).append(TAB);
}
sb.append(LS);
sb.append("Ave").append(TAB).append(TAB);
for (int i = 0; i < FRACTIONS_3SD_LEN; i++) {
final double relV = sumRanksArr[i] / tgtEstArrLen;
sb.append(relV).append(TAB);
}
sb.append(LS + LS);
sb.append(getSumHeader()).append(LS);
sb.append(trials).append(TAB);
sb.append((int)qNinTgtEstRange.getMinItem()).append(TAB);
sb.append((int)qNinTgtEstRange.getQuantile(.5)).append(TAB);
sb.append((int)qNinTgtEstRange.getMaxItem()).append(TAB);
sb.append(minTgtHits).append(TAB);
sb.append(maxTgtHits).append(TAB);
sb.append(totalTgtHits).append(TAB);
sb.append(totalEsts).append(TAB);
sb.append(vIn);
sb.append(LS);
}