MCPcopy Create free account
hub / github.com/ParAlg/gbbs / integer_sort_

Function integer_sort_

pbbslib/integer_sort.h:190–204  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

188// num_bucket must be less than or equal to 2^bits
189template <typename SeqIn, typename IterOut, typename Get_Key>
190sequence<size_t> integer_sort_(SeqIn const &In, range<IterOut> Out,
191 range<IterOut> Tmp, Get_Key const &g,
192 size_t bits, size_t num_buckets, bool inplace) {
193 if (slice_eq(In.slice(), Out)) {
194 std::cout << "in integer_sort : input and output must be different locations" << std::endl;
195 exit(-1);
196 }
197 if (bits == 0) {
198 auto get_key = [&](size_t i) { return g(In[i]); };
199 auto keys = delayed_seq<size_t>(In.size(), get_key);
200 num_buckets = reduce(keys, maxm<size_t>()) + 1;
201 bits = log2_up(num_buckets);
202 }
203 return integer_sort_r(In, Out, Tmp, g, bits, num_buckets, inplace);
204}
205
206template <typename T, typename Get_Key>
207void integer_sort_inplace(range<T *> In, Get_Key const &g,

Callers 5

integer_sort_inplaceFunction · 0.85
integer_sortFunction · 0.85
collect_reduceFunction · 0.85
collect_reduce_sparseFunction · 0.85
histogramFunction · 0.85

Calls 6

slice_eqFunction · 0.85
integer_sort_rFunction · 0.85
reduceFunction · 0.70
log2_upFunction · 0.70
sliceMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected