private void compute()

in src/main/java/org/apache/datasketches/characterization/req/TrueFloatRanks.java [85:112]


  private void compute() {
    length = stream.length;
    sortedStream = stream.clone();
    Arrays.sort(sortedStream);
    sortedAbsRanks = new int[length];
    if (ltEq) { //LE
      sortedAbsRanks[length - 1] = length;
      int i = length - 2;
      while (i >= 0) { //goes backwards
        if (sortedStream[i] == sortedStream[i + 1]) { sortedAbsRanks[i] = sortedAbsRanks[i + 1]; }
        else { sortedAbsRanks[i] = i + 1; }
        i--;
      }
    } else { // LT
      sortedAbsRanks[0] = 0;
      int i = 1;
      while (i < length) { //forwards
        if (sortedStream[i - 1] == sortedStream[i]) { sortedAbsRanks[i] = sortedAbsRanks[i - 1]; }
        else { sortedAbsRanks[i] = i; }
        i++;
      }
    }
    streamAbsRanks = new int[length]; //put the ranks in original stream order
    for (int j = 0; j < length; j++) {
      final int idx = BinarySearch.find(sortedStream, 0, length - 1, stream[j]);
      streamAbsRanks[j] = sortedAbsRanks[idx];
    }
  }