src/main/java/org/apache/datasketches/characterization/kll/KllDoublesSketchWeightedRankGaussianAccuracyProfile.java [147:181]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  void doTrials() {
    job.println("");
    job.printfData(sFmt, (Object[])columnLabels);

    //Do numTrials for all plot points
    for (int t = 0; t < numTrials; t++) {
      sk.reset();
      doTrial();
    }

    //at this point each of the qStatsArr sketches has a distribution of error from the trials
    QuantilesAccuracyStats.sortByQuantile(qStatsArr);
    for (int i = 0 ; i < numSteps; i++) {
      //for each of the numErrDistRanks distributions extract the sd quantiles
      final double[] errQ = qStatsArr[i].qsk.getQuantiles(gRanks); //get error values at the Gaussian ranks

      //Plot the row. We ignore quantiles collected at 0 and 1.0.
      final int numPP = i + 1;
      job.printfData(fFmt, numPP, qStatsArr[i].quantile, qStatsArr[i].normRank,
          errQ[0], errQ[1], errQ[2], errQ[3], errQ[4], errQ[5], errQ[6]);
      qStatsArr[i].qsk.reset(); //reset the errQSkArr for next set if trials
    }

    job.println(sk.toString(true, false));
  }

  /**
   * A trial consists of updating a virgin sketch with a shuffled stream of streamLength values.
   * We capture the estimated ranks for all plotPoints and then update the errQSkArr with those
   * error values.
   */
  void doTrial() {
    Shuffle.shuffle(qStatsArr);
    if (weightedUpdate) {
      for (int i = 0; i < numSteps; i++) {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



src/main/java/org/apache/datasketches/characterization/kll/KllItemsSketchWeightedRankGaussianAccuracyProfile.java [144:178]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  void doTrials() {
    job.println("");
    job.printfData(sFmt, (Object[])columnLabels);

    //Do numTrials for all plot points
    for (int t = 0; t < numTrials; t++) {
      sk.reset();
      doTrial();
    }

    //at this point each of the qStatsArr sketches has a distribution of error from the trials
    QuantilesAccuracyStats.sortByQuantile(qStatsArr);
    for (int i = 0 ; i < numSteps; i++) {
      //for each of the numErrDistRanks distributions extract the sd quantiles
      final double[] errQ = qStatsArr[i].qsk.getQuantiles(gRanks); //get error values at the Gaussian ranks

      //Plot the row. We ignore quantiles collected at 0 and 1.0.
      final int numPP = i + 1;
      job.printfData(fFmt, numPP, qStatsArr[i].quantile, qStatsArr[i].normRank,
          errQ[0], errQ[1], errQ[2], errQ[3], errQ[4], errQ[5], errQ[6]);
      qStatsArr[i].qsk.reset(); //reset the errQSkArr for next set if trials
    }

    job.println(sk.toString(true, false));
  }

  /**
   * A trial consists of updating a virgin sketch with a shuffled stream of streamLength values.
   * We capture the estimated ranks for all plotPoints and then update the errQSkArr with those
   * error values.
   */
  void doTrial() {
    Shuffle.shuffle(qStatsArr);
    if (weightedUpdate) {
      for (int i = 0; i < numSteps; i++) {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



