58 const std::vector<int32_t>
A{5, 5, 6, 6, 8, 8, 8, 8, 8, -1, -5, 2, 7, 3};
59 const std::vector<uint32_t> histA{1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 2, 2, 1, 5, 1};
60 const size_t scaleBits = 17;
61 const auto size = (1ull << scaleBits) - 1;
68 const auto min = *std::min_element(
A.begin(),
A.end());
69 const std::vector<uint32_t> frequencies{renormedHistogram.begin(), renormedHistogram.end()};
70 std::vector<uint32_t> cumulative;
71 std::exclusive_scan(frequencies.begin(), frequencies.end(), std::back_inserter(cumulative), 0);
73 for (
size_t i = 0;
i < frequencies.size(); ++
i) {
74 const int symbol =
min +
i;
75 for (
size_t cumul = cumulative[
i]; cumul < cumulative[
i] + frequencies[
i]; ++cumul) {