+2010-06-08 Johannes Singler <singler@kit.edu>
+
+ * include/parallel/partial_sum.h
+ (__parallel_partial_sum_linear):
+ Correctly calculate part lengths for partial_sum_dilation!=1.
+
2010-06-07 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/44417
equally_split(__n, __num_threads + 1, __borders);
else
{
+ _DifferenceType __first_part_length =
+ std::max<_DifferenceType>(1,
+ __n / (1.0f + __s.partial_sum_dilation * __num_threads));
_DifferenceType __chunk_length =
- ((double)__n
- / ((double)__num_threads + __s.partial_sum_dilation)),
- __borderstart = __n - __num_threads * __chunk_length;
+ (__n - __first_part_length) / __num_threads;
+ _DifferenceType __borderstart =
+ __n - __num_threads * __chunk_length;
__borders[0] = 0;
for (_ThreadIndex __i = 1; __i < (__num_threads + 1); ++__i)
{