Uh oh!
There was an error while loading. Please reload this page.
ARROW-13130: [C++] Add decimal support to arithmetic kernels - #11313
ARROW-13130: [C++] Add decimal support to arithmetic kernels#11313lidavidm wants to merge 2 commits into
Conversation
lidavidm
commented
Oct 4, 2021
Apologies in advance to whoever tries to review this. If it helps, I can try to split along these lines:
|
westonpace
commented
Oct 5, 2021
This can be a follow-up but can we modify compute.rst to flag which operations cast decimal to double? Probably as a new flag. |
lidavidm
commented
Oct 5, 2021
D'oh, I knew I was forgetting something - I'll update the docs. I'll also split out the array validation changes and the rounding kernel here (since that kernel is much more involved and honestly could probably use some cleanup). |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
lidavidm
commented
Nov 1, 2021
@pitrou would you be able to take a look at the hash aggregate changes here? |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Benchmark runs are scheduled for baseline = 3626a08 and contender = 6f4c991. 6f4c991 is a master commit associated with this PR. Results will be available as each benchmark for each run completes. |
This adds decimal support for the following kernels (and _checked variants where applicable): abs, acos, add/sub/mul/div, asin, atan, atan2, ceil, cos, floor, hash_stddev, hash_tdigest, hash_variance, is_finite, is_inf, is_nan, ln, log1p, log2, logb, mode, negate, power, quantile, round, round_to_multiple, sign, sin, stddev/variance, tan, tdigest, trunc
Most kernels cast decimals to double and proceed. Some, including rounding, directly operate on decimals. Aggregate kernels directly operate on decimals (and cast to double inline) since DispatchBest is not usable for the aggregate nodes (at least, unless we also reimplement implicit casting there).
Additionally, ValidateFull for scalars/arrays now checks FitsInPrecision. A number of tests were adjusted to account for this.