- lower_limit = floor (min / half_bin_width) - 1;
- upper_limit = floor (max / half_bin_width) + 1;
-
- if (remainder (min, half_bin_width > remainder (max, half_bin_width)))
- sparse_end = -1;
- else
- sparse_end = +1;
+ {
+ double ul, ll;
+ double lower_tail = modf (min / half_bin_width, &ll);
+ double upper_tail = modf (max / half_bin_width, &ul);
+ lower_limit = ll - 1;
+ upper_limit = ul + 1;
+
+ sparse_end = lower_tail < upper_tail ? -1 : +1;
+ }