docs: public void setPartitions(Relation<V> relation) throws IllegalArgumentException {
      if((FastMath.log(partitions) / FastMath.log(2)) != (int) (FastMath.log(partitions) / FastMath.log(2))) {
        throw new IllegalArgumentException("Number of partitions must be a power of 2!");
      }
  
      final int dimensions = RelationUtil.dimensionality(relation);
      final int size = relation.size();
      splitPositions = new double[dimensions][partitions + 1];
  
      for(int d = 0; d < dimensions; d++) {
        double[] tempdata = new double[size];
        int j = 0;
        for(DBIDIter iditer = relation.iterDBIDs(); iditer.valid(); iditer.advance()) {
          tempdata[j] = relation.get(iditer).doubleValue(d);
          j += 1;
        }
        Arrays.sort(tempdata);
  
        for(int b = 0; b < partitions; b++) {
          int start = (int) (b * size / (double) partitions);
          splitPositions[d][b] = tempdata[start];
        }
        // make sure that last object will be included
        splitPositions[d][partitions] = tempdata[size - 1] + 0.000001;
      }
    }