float splat(DHistogram hs[]) {
      DHistogram h = hs[_col];
      assert _bin > 0 && _bin < h.nbins();
      assert _bs==null : "Dividing point is a bitset, not a bin#, so dont call splat() as result is meaningless";
      if (_nasplit == DHistogram.NASplitDir.NAvsREST) return -1;
      assert _equal != 1;
      assert _equal==0; // not here for bitset splits, just range splits
      // Find highest non-empty bin below the split
      int x=_bin-1;
      while( x >= 0 && h.bins(x)==0 ) x--;
      // Find lowest  non-empty bin above the split
      int n=_bin;
      while( n < h.nbins() && h.bins(n)==0 ) n++;
      // Lo is the high-side of the low non-empty bin, rounded to int for int columns
      // Hi is the low -side of the hi  non-empty bin, rounded to int for int columns

      // Example: Suppose there are no empty bins, and we are splitting an
      // integer column at 48.4 (more than nbins, so step != 1.0, perhaps
      // step==1.8).  The next lowest non-empty bin is from 46.6 to 48.4, and
      // we set lo=48.4.  The next highest non-empty bin is from 48.4 to 50.2
      // and we set hi=48.4.  Since this is an integer column, we round lo to
      // 48 (largest integer below the split) and hi to 49 (smallest integer
      // above the split).  Finally we average them, and split at 48.5.
      double lo = h.binAt(x+1);
      double hi = h.binAt(n  );
      if( h._isInt > 0 ) lo = h._step==1 ? lo-1 : Math.floor(lo);
      if( h._isInt > 0 ) hi = h._step==1 ? hi   : Math.ceil (hi);
      return (float)((lo+hi)/2.0);
    }
float splat ( DHistogram hs [ ] ) { DHistogram h = hs [ _col ] ; assert _bin > 0 && _bin < h . nbins ( ) ; assert _bs == null : "Dividing point is a bitset, not a bin#, so dont call splat() as result is meaningless" ; if ( _nasplit == DHistogram . NASplitDir . NAvsREST ) return - 1 ; assert _equal != 1 ; assert _equal == 0 ; int x = _bin - 1 ; while ( x >= 0 && h . bins ( x ) == 0 ) x -- ; int n = _bin ; while ( n < h . nbins ( ) && h . bins ( n ) == 0 ) n ++ ; double lo = h . binAt ( x + 1 ) ; double hi = h . binAt ( n ) ; if ( h . _isInt > 0 ) lo = h . _step == 1 ? lo - 1 : Math . floor ( lo ) ; if ( h . _isInt > 0 ) hi = h . _step == 1 ? hi : Math . ceil ( hi ) ; return ( float ) ( ( lo + hi ) / 2.0 ) ; }
elements.