148        typedef typename Range::iterator range_iterator;
 
  159        if (
m_size <= CuttingAccuracy){
 
  163            boost::array<const_iterator,CuttingAccuracy> samples;
 
  164            for(std::size_t i = 0; i != CuttingAccuracy; i++)
 
  165                samples[i] = points[
m_size * (2*i+1) / (2*CuttingAccuracy)];
 
  170        std::vector<double> distance(
m_size);
 
  171        for(std::size_t i = 0; i != 
m_size; ++i){
 
  172            distance[i] = 
funct(*points[i]);
 
  177        range_iterator split = this->
splitList(distance,points);
 
  178        range_iterator begin = boost::begin(points);
 
  179        range_iterator end = boost::end(points);
 
  187        std::size_t leftSize = split-begin;
 
  192        boost::iterator_range<range_iterator> 
left(begin,split);
 
  193        boost::iterator_range<range_iterator> 
right(split,end);