[ 
https://issues.apache.org/jira/browse/HIVE-4822?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13713988#comment-13713988
 ] 

Eric Hanson commented on HIVE-4822:
-----------------------------------

The current code does not update VectorizationContext.java to make the new math 
functions run end-to-end. I'll open another JIRA for that.

Positive() and Negative() are not included. Positive() is a no-op and 
Negative() is already implemented as unary minus.

E() and Pi() are not implemented. They should be implemented separately using 
constant folding.

Conv() is only implemented for string input, not number input. Conv() on number 
input, if it is to be implemented in the future, should be done with an 
implicit cast of the argument to a string, and then calling the Conv() for 
string input.

                
> implement vectorized math functions
> -----------------------------------
>
>                 Key: HIVE-4822
>                 URL: https://issues.apache.org/jira/browse/HIVE-4822
>             Project: Hive
>          Issue Type: Sub-task
>    Affects Versions: vectorization-branch
>            Reporter: Eric Hanson
>            Assignee: Eric Hanson
>         Attachments: HIVE-4822.1.patch, HIVE-4822.4.patch
>
>
> Implement vectorized support for the all the built-in math functions. This 
> includes implementing the vectorized operation, and tying it all together in 
> VectorizationContext so it runs end-to-end. These functions include:
> round(Col)
> Round(Col, N)
> Floor(Col)
> Ceil(Col)
> Rand(), Rand(seed)
> Exp(Col)
> Ln(Col)
> Log10(Col)
> Log2(Col)
> Log(base, Col)
> Pow(col, p), Power(col, p)
> Sqrt(Col)
> Bin(Col)
> Hex(Col)
> Unhex(Col)
> Conv(Col, from_base, to_base)
> Abs(Col)
> Pmod(arg1, arg2)
> Sin(Col)
> Asin(Col)
> Cos(Col)
> ACos(Col)
> Atan(Col)
> Degrees(Col)
> Radians(Col)
> Positive(Col)
> Negative(Col)
> Sign(Col)
> E()
> Pi()
> To reduce the total code volume, do an implicit type cast from non-double 
> input types to double. 
> Also, POSITITVE and NEGATIVE are syntactic sugar for unary + and unary -, so 
> reuse code for those as appropriate.
> Try to call the function directly in the inner loop and avoid new() or 
> expensive operations, as appropriate.
> Templatize the code where appropriate, e.g. all the unary function of form 
> DOUBLE func(DOUBLE)
> can probably be done with a template.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to