@@ -361,30 +361,22 @@ void Term::setup_bins()
361361 auto ip{std::unique (values_sorted_unique.begin (),values_sorted_unique.end ())};
362362 values_sorted_unique.resize (std::distance (values_sorted_unique.begin (),ip));
363363
364- bins_start_index.reserve (bins+1 );
365- bins_end_index.reserve (bins+1 );
366- // Allocations
367- bool eligible_spacing{false };
368- bool eligible_unique_numbers{false };
364+ bins_start_index.reserve (bins+1 );
365+ bins_end_index.reserve (bins+1 );
369366 // Start_index
370367 bins_start_index.push_back (0 );
371368 if (bins>1 )
372369 {
373- for (size_t i = min_observations_in_split-1 ; i <= max_index; ++i) // for each observation in an allowable range
370+ for (size_t i = min_observations_in_split-1 ; i <= max_index+ 1 -min_observations_in_split ; ++i) // for each observation in an allowable range
374371 {
375- // General eligibility
376- if (i>=min_observations_in_split-1 && (i%observations_in_bin==0 || values_sorted_unique.size ()<=bins) && i<=max_index+1 -min_observations_in_split) eligible_spacing=true ;
372+ size_t last_bin_start_index{bins_start_index[bins_start_index.size ()-1 ]};
373+ bool eligible_on_spacing_between_observations{i >= last_bin_start_index + observations_in_bin || values_sorted_unique.size ()<=bins};
374+ bool eligible_on_unique_numbers{i>0 && !check_if_approximately_equal (sorted_vectors.values_sorted [i],sorted_vectors.values_sorted [i-1 ])};
377375
378- // Eligibility when considering unique numbers
379- if (i>0 && !check_if_approximately_equal (sorted_vectors.values_sorted [i],sorted_vectors.values_sorted [i-1 ])) eligible_unique_numbers=true ;
380- else eligible_unique_numbers=false ;
381-
382- // Creating bin if possible and resetting eligibility for next iteration
383- if (eligible_spacing && eligible_unique_numbers)
376+ bool create_bin{eligible_on_spacing_between_observations && eligible_on_unique_numbers};
377+ if (create_bin)
384378 {
385379 bins_start_index.push_back (i);
386- eligible_spacing=false ;
387- eligible_unique_numbers=false ;
388380 }
389381 }
390382 }
0 commit comments