MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / reduce_by_key_common

Function reduce_by_key_common

src/api/c/reduce.cpp:231–303  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

229
230template<af_op_t op>
231static af_err reduce_by_key_common(af_array *keys_out, af_array *vals_out,
232 const af_array keys, const af_array vals,
233 const int dim) {
234 try {
235 ARG_ASSERT(4, dim >= 0);
236 ARG_ASSERT(4, dim < 4);
237
238 const ArrayInfo &kinfo = getInfo(keys);
239 const ArrayInfo &in_info = getInfo(vals);
240 af_dtype type = in_info.getType();
241
242 ARG_ASSERT(2, kinfo.isVector());
243 ARG_ASSERT(2, in_info.dims()[dim] == kinfo.dims()[0]);
244
245 switch (type) {
246 case f32:
247 reduce_key<op, float, float>(keys_out, vals_out, keys, vals,
248 dim);
249 break;
250 case f64:
251 reduce_key<op, double, double>(keys_out, vals_out, keys, vals,
252 dim);
253 break;
254 case c32:
255 reduce_key<op, cfloat, cfloat>(keys_out, vals_out, keys, vals,
256 dim);
257 break;
258 case c64:
259 reduce_key<op, cdouble, cdouble>(keys_out, vals_out, keys, vals,
260 dim);
261 break;
262 case u32:
263 reduce_key<op, uint, uint>(keys_out, vals_out, keys, vals, dim);
264 break;
265 case s32:
266 reduce_key<op, int, int>(keys_out, vals_out, keys, vals, dim);
267 break;
268 case u64:
269 reduce_key<op, uintl, uintl>(keys_out, vals_out, keys, vals,
270 dim);
271 break;
272 case s64:
273 reduce_key<op, intl, intl>(keys_out, vals_out, keys, vals, dim);
274 break;
275 case u16:
276 reduce_key<op, ushort, ushort>(keys_out, vals_out, keys, vals,
277 dim);
278 break;
279 case s16:
280 reduce_key<op, short, short>(keys_out, vals_out, keys, vals,
281 dim);
282 break;
283 case b8:
284 reduce_key<op, char, char>(keys_out, vals_out, keys, vals, dim);
285 break;
286 case u8:
287 reduce_key<op, uchar, uchar>(keys_out, vals_out, keys, vals,
288 dim);

Callers

nothing calls this directly

Calls 3

isVectorMethod · 0.80
getTypeMethod · 0.45
dimsMethod · 0.45

Tested by

no test coverage detected