Skip to content

Commit

Permalink
using uint instead of floats
Browse files Browse the repository at this point in the history
  • Loading branch information
DiamonDinoia committed Jun 12, 2024
1 parent c8f389a commit 10deea6
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions src/spreadinterp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1612,20 +1612,21 @@ void bin_sort_singlethread(
};

const auto compute_bins = [=](auto... args) constexpr noexcept {
std::array<const FLT *, sizeof...(args)> k_arr = {args...};
auto bins = xsimd::floor(
fold_rescale_vec(xsimd::load_unaligned(k_arr[0]), N1) * inv_bin_size_x);
const std::array<const FLT *, sizeof...(args)> k_arr = {args...};
//
auto bins =
to_uint(fold_rescale_vec(xsimd::load_unaligned(k_arr[0]), N1) * inv_bin_size_x);
if constexpr (sizeof...(args) > 1) {
const auto i2 = xsimd::floor(
fold_rescale_vec(xsimd::load_unaligned(k_arr[1]), N2) * inv_bin_size_y);
const auto i2 =
to_uint(fold_rescale_vec(xsimd::load_unaligned(k_arr[1]), N2) * inv_bin_size_y);
bins = xsimd::fma(decltype(bins)(nbins1), i2, bins);
}
if constexpr (sizeof...(args) > 2) {
const auto i3 = xsimd::floor(
fold_rescale_vec(xsimd::load_unaligned(k_arr[2]), N3) * inv_bin_size_z);
const auto i3 =
to_uint(fold_rescale_vec(xsimd::load_unaligned(k_arr[2]), N3) * inv_bin_size_z);
bins = xsimd::fma(decltype(bins)(nbins12), i3, bins);
}
return to_uint(bins);
return bins;
};

const auto increment_bins = [&counts](const auto bins) constexpr noexcept {
Expand Down

0 comments on commit 10deea6

Please sign in to comment.