code: public T[] getQuantiles(final double[] fRanks) {
      if (isEmpty()) { return null; }
      ItemsAuxiliary<T> aux = null;
      @SuppressWarnings("unchecked")
      final T[] quantiles = (T[]) Array.newInstance(minValue_.getClass(), fRanks.length);
      for (int i = 0; i < fRanks.length; i++) {
        final double fRank = fRanks[i];
        if      (fRank == 0.0) { quantiles[i] = minValue_; }
        else if (fRank == 1.0) { quantiles[i] = maxValue_; }
        else {
          if (aux == null) {
            aux = this.constructAuxiliary();
          }
          quantiles[i] = aux.getQuantile(fRank);
        }
      }
      return quantiles;
    }
docs: This is a more efficient multiple-query version of getQuantile().
  
  <p>This returns an array that could have been generated by using getQuantile() with many
  different fractional ranks, but would be very inefficient.
  This method incurs the internal set-up overhead once and obtains multiple quantile values in
  a single query. It is strongly recommend that this method be used instead of multiple calls
  to getQuantile().
  
  <p>If the sketch is empty this returns null.
  
  @param fRanks the given array of fractional (or normalized) ranks in the hypothetical
  sorted stream of all the input values seen so far.
  These fRanks must all be in the interval [0.0, 1.0] inclusively.
  
  @return array of approximate quantiles of the given fRanks in the same order as in the given
  fRanks array.