docs: public static double minDot(SpatialComparable v1, SpatialComparable v2) {
      if(v1 instanceof NumberVector && v2 instanceof NumberVector) {
        return dot((NumberVector) v1, (NumberVector) v2);
      }
      final int dim1 = v1.getDimensionality(), dim2 = v2.getDimensionality();
      final int mindim = (dim1 <= dim2) ? dim1 : dim2;
      // Essentially, we want to compute this:
      // absmax(v1.transposeTimes(v2));
      double s1 = 0, s2 = 0;
      for(int k = 0; k < mindim; k++) {
        final double min1 = v1.getMin(k), max1 = v1.getMax(k);
        final double min2 = v2.getMin(k), max2 = v2.getMax(k);
        final double p1 = min1 * min2, p2 = min1 * max2;
        final double p3 = max1 * min2, p4 = max1 * max2;
        s1 += Math.max(Math.max(p1, p2), Math.max(p3, p4));
        s2 += Math.min(Math.min(p1, p2), Math.min(p3, p4));
      }
      return Math.max(Math.abs(s1), Math.abs(s2));
    }