diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java index fdbca0c81b..97820e5882 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java @@ -43,7 +43,7 @@ */ @Override protected DoubleWritable doEvaluate(DoubleWritable a) { - result.set(Math.cos(a.get())); + result.set(StrictMath.cos(a.get())); return result; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java index 305d432250..a05489d868 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java @@ -43,7 +43,7 @@ */ @Override protected DoubleWritable doEvaluate(DoubleWritable a) { - result.set(Math.exp(a.get())); + result.set(StrictMath.exp(a.get())); return result; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java index 21723cd703..4f69ade01e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java @@ -72,7 +72,7 @@ protected DoubleWritable doEvaluate(DoubleWritable a) { if (a.get() <= 0.0) { return null; } else { - result.set(Math.log(a.get())); + result.set(StrictMath.log(a.get())); return result; } } @@ -81,7 +81,7 @@ private DoubleWritable log(double base, double input) { if (base <= 1.0 || input <= 0.0) { return null; } - result.set(Math.log(input) / Math.log(base)); + result.set(StrictMath.log(input) / StrictMath.log(base)); return result; } diff --git a/ql/src/test/results/clientpositive/vector_decimal_udf2.q.out b/ql/src/test/results/clientpositive/vector_decimal_udf2.q.out index a30987a08c..143de7a730 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_udf2.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_udf2.q.out @@ -161,7 +161,7 @@ FROM DECIMAL_UDF2_n0) q POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf2_n0 #### A masked pattern was here #### --3806952922 +-3806982713 PREHOOK: query: EXPLAIN VECTORIZATION DETAIL SELECT exp(key), ln(key), @@ -283,7 +283,7 @@ FROM DECIMAL_UDF2_n0) q POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf2_n0 #### A masked pattern was here #### -1514360349 +-1970715434 PREHOOK: query: EXPLAIN VECTORIZATION DETAIL SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) FROM DECIMAL_UDF2_txt WHERE key = 10 @@ -387,7 +387,7 @@ FROM DECIMAL_UDF2_txt) q POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf2_txt #### A masked pattern was here #### --3806952922 +-3806982713 PREHOOK: query: EXPLAIN VECTORIZATION DETAIL SELECT exp(key), ln(key), @@ -509,7 +509,7 @@ FROM DECIMAL_UDF2_txt) q POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf2_txt #### A masked pattern was here #### -1514360349 +-1970715434 PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2_txt PREHOOK: type: DROPTABLE PREHOOK: Input: default@decimal_udf2_txt diff --git a/vector-code-gen/src/org/apache/hadoop/hive/tools/GenVectorCode.java b/vector-code-gen/src/org/apache/hadoop/hive/tools/GenVectorCode.java index cc413c828f..cc64aa4631 100644 --- a/vector-code-gen/src/org/apache/hadoop/hive/tools/GenVectorCode.java +++ b/vector-code-gen/src/org/apache/hadoop/hive/tools/GenVectorCode.java @@ -1067,11 +1067,11 @@ {"ColumnUnaryFunc", "FuncCeil", "long", "double", "Math.ceil", "", "(long)", "", ""}, // Ceil on an integer argument is a noop, but it is less code to handle it this way. {"ColumnUnaryFunc", "FuncCeil", "long", "long", "Math.ceil", "", "(long)", "", ""}, - {"ColumnUnaryFunc", "FuncExp", "double", "double", "Math.exp", "", "", "", ""}, - {"ColumnUnaryFunc", "FuncExp", "double", "long", "Math.exp", "(double)", "", "", ""}, - {"ColumnUnaryFunc", "FuncLn", "double", "double", "Math.log", "", "", + {"ColumnUnaryFunc", "FuncExp", "double", "double", "StrictMath.exp", "", "", "", ""}, + {"ColumnUnaryFunc", "FuncExp", "double", "long", "StrictMath.exp", "(double)", "", "", ""}, + {"ColumnUnaryFunc", "FuncLn", "double", "double", "StrictMath.log", "", "", "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);", ""}, - {"ColumnUnaryFunc", "FuncLn", "double", "long", "Math.log", "(double)", "", + {"ColumnUnaryFunc", "FuncLn", "double", "long", "StrictMath.log", "(double)", "", "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);", ""}, {"ColumnUnaryFunc", "FuncLog10", "double", "double", "Math.log10", "", "", "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);", ""}, @@ -1101,8 +1101,8 @@ {"ColumnUnaryFunc", "FuncAbs", "long", "long", "MathExpr.abs", "", "", "", ""}, {"ColumnUnaryFunc", "FuncSin", "double", "double", "Math.sin", "", "", "", ""}, {"ColumnUnaryFunc", "FuncSin", "double", "long", "Math.sin", "(double)", "", "", ""}, - {"ColumnUnaryFunc", "FuncCos", "double", "double", "Math.cos", "", "", "", ""}, - {"ColumnUnaryFunc", "FuncCos", "double", "long", "Math.cos", "(double)", "", "", ""}, + {"ColumnUnaryFunc", "FuncCos", "double", "double", "StrictMath.cos", "", "", "", ""}, + {"ColumnUnaryFunc", "FuncCos", "double", "long", "StrictMath.cos", "(double)", "", "", ""}, {"ColumnUnaryFunc", "FuncTan", "double", "double", "Math.tan", "", "", "", ""}, {"ColumnUnaryFunc", "FuncTan", "double", "long", "Math.tan", "(double)", "", "", ""}, {"ColumnUnaryFunc", "FuncATan", "double", "double", "Math.atan", "", "", "", ""},