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

Function reduce_promote_by_key

src/api/c/reduce.cpp:381–459  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

379
380template<af_op_t op>
381static af_err reduce_promote_by_key(af_array *keys_out, af_array *vals_out,
382 const af_array keys, const af_array vals,
383 const int dim, bool change_nan = false,
384 double nanval = 0.0) {
385 try {
386 ARG_ASSERT(4, dim >= 0);
387 ARG_ASSERT(4, dim < 4);
388
389 const ArrayInfo &kinfo = getInfo(keys);
390 const ArrayInfo &in_info = getInfo(vals);
391 af_dtype type = in_info.getType();
392
393 ARG_ASSERT(2, kinfo.isVector());
394 ARG_ASSERT(2, in_info.dims()[dim] == kinfo.dims()[0]);
395
396 switch (type) {
397 case f32:
398 reduce_key<op, float, float>(keys_out, vals_out, keys, vals,
399 dim, change_nan, nanval);
400 break;
401 case f64:
402 reduce_key<op, double, double>(keys_out, vals_out, keys, vals,
403 dim, change_nan, nanval);
404 break;
405 case c32:
406 reduce_key<op, cfloat, cfloat>(keys_out, vals_out, keys, vals,
407 dim, change_nan, nanval);
408 break;
409 case c64:
410 reduce_key<op, cdouble, cdouble>(keys_out, vals_out, keys, vals,
411 dim, change_nan, nanval);
412 break;
413 case u32:
414 reduce_key<op, uint, uint>(keys_out, vals_out, keys, vals, dim,
415 change_nan, nanval);
416 break;
417 case s32:
418 reduce_key<op, int, int>(keys_out, vals_out, keys, vals, dim,
419 change_nan, nanval);
420 break;
421 case u64:
422 reduce_key<op, uintl, uintl>(keys_out, vals_out, keys, vals,
423 dim, change_nan, nanval);
424 break;
425 case s64:
426 reduce_key<op, intl, intl>(keys_out, vals_out, keys, vals, dim,
427 change_nan, nanval);
428 break;
429 case u16:
430 reduce_key<op, ushort, uint>(keys_out, vals_out, keys, vals,
431 dim, change_nan, nanval);
432 break;
433 case s16:
434 reduce_key<op, short, int>(keys_out, vals_out, keys, vals, dim,
435 change_nan, nanval);
436 break;
437 case u8:
438 reduce_key<op, uchar, uint>(keys_out, vals_out, keys, vals, dim,

Callers

nothing calls this directly

Calls 3

isVectorMethod · 0.80
getTypeMethod · 0.45
dimsMethod · 0.45

Tested by

no test coverage detected