docs: public static double similarityNumberVector(NumberVector o1, NumberVector o2) {
      final int d1 = o1.getDimensionality(), d2 = o2.getDimensionality();
      int intersection = 0, union = 0;
      int d = 0;
      for(; d < d1 && d < d2; d++) {
        double v1 = o1.doubleValue(d), v2 = o2.doubleValue(d);
        if(v1 != v1 || v2 != v2) { // Skip NaNs.
          continue;
        }
        if(v1 != 0. || v2 != 0) {
          ++union;
          if(v1 == v2) {
            ++intersection;
          }
        }
      }
      for(; d < d1; d++) {
        if(o1.doubleValue(d) != 0) {
          ++union;
        }
      }
      for(; d < d2; d++) {
        if(o2.doubleValue(d) != 0) {
          ++union;
        }
      }
      return intersection / (double) union;
    }