[ 
https://issues.apache.org/jira/browse/ARROW-12413?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joris Van den Bossche updated ARROW-12413:
------------------------------------------
    Description: 
See comments at https://github.com/apache/arrow/pull/9841#issuecomment-818526907

Power kernel is modified from add/sub/mul/div kernels. But power is much more 
complicated than basic arithmetic operations. Some limitations in current 
implementation:

- Base and exponent must be the same type, this is not reasonable
- Null handling is delayed to the end, and power is always calculated even for 
nulls (with whatever base/exponent happen to be in the slots). This is a big 
waste of time for expensive power calculations.

For checked power, integer overflow is checked for every multiplication. As the 
integer upper bound is already know, it can be calculate directly if the power 
will overflow. It will remove overflow checks in each iteration, but will 
introduce one expensive logarithm operation. Maybe deserve a try.

  was:See comments at 
https://github.com/apache/arrow/pull/9841#issuecomment-818526907


> [C++][Compute] Improve power kernel
> -----------------------------------
>
>                 Key: ARROW-12413
>                 URL: https://issues.apache.org/jira/browse/ARROW-12413
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: C++
>            Reporter: Yibo Cai
>            Priority: Major
>
> See comments at 
> https://github.com/apache/arrow/pull/9841#issuecomment-818526907
> Power kernel is modified from add/sub/mul/div kernels. But power is much more 
> complicated than basic arithmetic operations. Some limitations in current 
> implementation:
> - Base and exponent must be the same type, this is not reasonable
> - Null handling is delayed to the end, and power is always calculated even 
> for nulls (with whatever base/exponent happen to be in the slots). This is a 
> big waste of time for expensive power calculations.
> For checked power, integer overflow is checked for every multiplication. As 
> the integer upper bound is already know, it can be calculate directly if the 
> power will overflow. It will remove overflow checks in each iteration, but 
> will introduce one expensive logarithm operation. Maybe deserve a try.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to