Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
vectorization-branch
-
None
-
None
Description
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.
Attachments
Attachments
Issue Links
- relates to
-
HIVE-4898 make vectorized math functions work end-to-end (update VectorizationContext.java)
- Resolved