private void process()

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);
    }
  }