Hi Rares,

We have an open Jira issue for this at
https://issues.apache.org/jira/browse/ARROW-12755, and some other
related issues linked from it. Please comment there if you have
suggestions for the implementation.

Thank you,
Ian


On Wed, Jul 28, 2021 at 7:15 AM Antoine Pitrou <anto...@python.org> wrote:
>
>
> Hello Rares,
>
> I agree with defining a new modulo compute function (or "remainder"?).
> However, there also needs to be a checked version that returns an error
> for invalid input (e.g. division by zero).
>
> Regards
>
> Antoine.
>
>
> Le 28/07/2021 à 13:04, Rares Vernica a écrit :
> > Hello,
> >
> > I'm making use of the Compute Functions to do some basic arithmetic. One
> > operation I need to perform is the modulo, i.e., a % b. I'm debating
> > between two options:
> >
> > 1. Compute it using the available Compute Functions using a % b = a - a / b
> > * b, where / is the integer division. I assume that the divide compute
> > function between two integer arrays does integer division, right? My
> > concern with this approach is the overhead of using four Compute Functions.
> >
> > 2. Define a new Compute Function for modulo. Would something like this
> > suffice?
> >
> > struct Modulo {
> >    template <typename T, typename Arg0, typename Arg1>
> >    static enable_if_floating_point<T> Call(KernelContext*, Arg0 left, Arg1
> > right, Status*) {
> >      return left % right;
> >    }}
> > auto modulo = MakeArithmeticFunctionNotNull<Modulo>("modulo", &div_doc);
> > AddDecimalBinaryKernels<Modulo>("modulo", &modulo);
> > DCHECK_OK(registry->AddFunction(std::move(modulo)));
> >
> > Thank you,
> > Rares
> >

Reply via email to