A high-performance general-purpose compute library

Check if any values along a given dimension are true, according to an array of keys. More...

Functions

AFAPI void anyTrueByKey (array &keys_out, array &vals_out, const array &keys, const array &vals, const int dim=-1)
 C++ Interface to check if any values along a given dimension are true, according to an array of keys. More...
 
AFAPI af_err af_any_true_by_key (af_array *keys_out, af_array *vals_out, const af_array keys, const af_array vals, const int dim)
 C Interface to check if any values along a given dimension are true. More...
 

Detailed Description

Check if any values along a given dimension are true, according to an array of keys.

Values corresponding to each group of consecutive equal keys will be tested to check if any are true. Keys can repeat; however, only consecutive key values will be considered for each reduction. If a key value is repeated somewhere else in the keys array it will be considered the start of a new reduction. There are two outputs: the reduced set of consecutive keys and the corresponding final set of reduced values.

An example demonstrating the reduction behavior can be seen in the following snippet.

array keys(9, hkeys); // keys = [ 0 0 1 1 1 0 0 2 2 ]
array vals(9, hvals); // vals = [ 1 1 0 1 1 0 0 1 0 ];
array okeys, ovals;
anyTrueByKey(okeys, ovals, keys, vals);
// okeys = [ 0 1 0 2 ]
// ovals = [ 1 0 0 0 ]

The keys' input type must be integer (s32 or u32).

The output type is b8.

The keys array must be 1-dimenstional matching the size of the reduced dimension. An example of multi-dimensional reduce-by-key can be seen below:

array keys(5, hkeys);
array vals(2, 5, hvals);
// keys = [ 1 0 0 2 2 ]
// vals = [[ 1 1 1 0 1 ]
// [ 0 1 0 1 1 ]]
const int reduce_dim = 1;
array okeys, ovals;
anyTrueByKey(okeys, ovals, keys, vals, reduce_dim);
// okeys = [ 1 0 2 ]
// ovals = [[ 1 1 1 ],
// [ 0 1 1 ]]

Function Documentation

◆ af_any_true_by_key()

AFAPI af_err af_any_true_by_key ( af_array keys_out,
af_array vals_out,
const af_array  keys,
const af_array  vals,
const int  dim 
)

C Interface to check if any values along a given dimension are true.

NaN values are ignored.

Parameters
[out]keys_outreduced keys
[out]vals_outarray containing 1's if any true; 0's otherwise
[in]keyskeys array
[in]valsinput array
[in]dimdimensions along which the check occurs
Returns
AF_SUCCESS, if function returns successfully, else an af_err code is given

◆ anyTrueByKey()

AFAPI void anyTrueByKey ( array keys_out,
array vals_out,
const array keys,
const array vals,
const int  dim = -1 
)

C++ Interface to check if any values along a given dimension are true, according to an array of keys.

NaN values are ignored.

Parameters
[out]keys_outreduced keys
[out]vals_outarray containing 1's if any true; 0's otherwise
[in]keyskeys array
[in]valsinput array
[in]dimdimension along which the check occurs