private DoubleMinMax exactMinMax(Relation<O> relation,DistanceQuery<O> distFunc){
  final FiniteProgress progress=LOG.isVerbose() ? new FiniteProgress("Exact fitting distance computations",relation.size(),LOG) : null;
  DoubleMinMax minmax=new DoubleMinMax();
  for (DBIDIter iditer=relation.iterDBIDs(); iditer.valid(); iditer.advance()) {
    for (DBIDIter iditer2=relation.iterDBIDs(); iditer2.valid(); iditer2.advance()) {
      if (DBIDUtil.equal(iditer,iditer2)) {
        continue;
      }
      double d=distFunc.distance(iditer,iditer2);
      minmax.put(d);
    }
    LOG.incrementProcessed(progress);
  }
  LOG.ensureCompleted(progress);
  return minmax;
}

private DoubleMinMax exactMinMax ( Relation < O > relation , DistanceQuery < O > distFunc ) { final FiniteProgress progress = LOG . isVerbose ( ) ? new FiniteProgress ( "Exact fitting distance computations" , relation . size ( ) , LOG ) : null ; DoubleMinMax minmax = new DoubleMinMax ( ) ; for ( DBIDIter iditer = relation . iterDBIDs ( ) ; iditer . valid ( ) ; iditer . advance ( ) ) { for ( DBIDIter iditer2 = relation . iterDBIDs ( ) ; iditer2 . valid ( ) ; iditer2 . advance ( ) ) { if ( DBIDUtil . equal ( iditer , iditer2 ) ) { continue ; } double d = distFunc . distance ( iditer , iditer2 ) ; minmax . put ( d ) ; } LOG . incrementProcessed ( progress ) ; } LOG . ensureCompleted ( progress ) ; return minmax ; }
compute the exact maximum and minimum .
