diff --git a/source/utils.hpp b/source/utils.hpp index 29142c1f1c408ebfc22359b28046cc673935ee98..41116be49adfe95048e4437358c5d07264a3d6d7 100644 --- a/source/utils.hpp +++ b/source/utils.hpp @@ -28,21 +28,21 @@ std::array<range<T>,N> split(const range<T> whole, M mask) { std::array<range<T>, N> pieces{}; T size = whole.upper() - whole.lower(); - T piece_size = size / N; - T remainder = size % N; + auto piece_size = T{size / N}; + auto remainder = T{size % N}; auto lower = whole.lower(); for(size_t i = 0; i < N; ++i) { auto& piece = pieces[i]; - piece = range<T>{lower, lower + piece_size + T{remainder --> T{}}}; + piece = range<T>{lower, lower + piece_size + (remainder --> T{})}; lower = piece.upper(); // apply mask for(size_t j = 0; j < piece.bounds.size(); ++j) { - piece.bounds[j] *= T{mask}; - piece.bounds[j] += whole.bounds[j] * T{~mask}; + piece.bounds[j] *= mask; + piece.bounds[j] += whole.bounds[j] * ~mask; } }