private double manhattanSegmentalDistance(NumberVector o1,NumberVector o2,long[] dimensions){
  double result=0;
  int card=0;
  for (int d=BitsUtil.nextSetBit(dimensions,0); d >= 0; d=BitsUtil.nextSetBit(dimensions,d + 1)) {
    result+=Math.abs(o1.doubleValue(d) - o2.doubleValue(d));
    ++card;
  }
  result/=card;
  return result;
}

private double manhattanSegmentalDistance ( NumberVector o1 , NumberVector o2 , long [ ] dimensions ) { double result = 0 ; int card = 0 ; for ( int d = BitsUtil . nextSetBit ( dimensions , 0 ) ; d >= 0 ; d = BitsUtil . nextSetBit ( dimensions , d + 1 ) ) { result += Math . abs ( o1 . doubleValue ( d ) - o2 . doubleValue ( d ) ) ; ++ card ; } result /= card ; return result ; }
returns the manhattan segmental distance between o1 and o2 relative to the specified dimensions .
