You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by kr...@apache.org on 2023/04/13 13:00:02 UTC

[hive] branch master updated: HIVE-27145: Use StrictMath for remaining Math functions as followup of HIVE-23133 (Himanshu Mishra, reviewed by Krisztian Kasa, Syed Shameerur Rahman)

This is an automated email from the ASF dual-hosted git repository.

krisztiankasa pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new a029c5fd042 HIVE-27145: Use StrictMath for remaining Math functions as followup of HIVE-23133 (Himanshu Mishra, reviewed by Krisztian Kasa, Syed Shameerur Rahman)
a029c5fd042 is described below

commit a029c5fd04268bd3254a3db2d44b08299b4b4ffb
Author: Himanshu Mishra <hi...@gmail.com>
AuthorDate: Thu Apr 13 18:29:53 2023 +0530

    HIVE-27145: Use StrictMath for remaining Math functions as followup of HIVE-23133 (Himanshu Mishra, reviewed by Krisztian Kasa, Syed Shameerur Rahman)
    
    HIVE-23133 started using StrictMath for cos, exp, log UDFs to fix Q
    Tests failing because results could vary based on hardware when
    using Math library.
    
    1. There are other Math functions that can have same impact of underlying
    hardware namely, sin, tan, asin, acos, atan, sqrt, pow, cbrt. Using
    StrictMath for these as well.
    2. HIVE-23133 missed custom vector classes for Log, using StrictMath for those.
    3. JDK-4477961 (in Java 9) changed radians and degrees calculation
    leading to Q Test failures. Using round() to ensure tests pass on JDK 8
    and later
    
    Co-authored-by: Himanshu Mishra <mi...@amazon.com>
---
 .../expressions/FuncLogWithBaseDoubleToDouble.java |  2 +-
 .../expressions/FuncLogWithBaseLongToDouble.java   |  2 +-
 .../expressions/FuncPowerDoubleToDouble.java       |  2 +-
 .../vector/expressions/FuncPowerLongToDouble.java  |  2 +-
 .../org/apache/hadoop/hive/ql/udf/UDFAcos.java     |  2 +-
 .../org/apache/hadoop/hive/ql/udf/UDFAsin.java     |  2 +-
 .../org/apache/hadoop/hive/ql/udf/UDFAtan.java     |  2 +-
 .../java/org/apache/hadoop/hive/ql/udf/UDFSin.java |  2 +-
 .../org/apache/hadoop/hive/ql/udf/UDFSqrt.java     |  2 +-
 .../java/org/apache/hadoop/hive/ql/udf/UDFTan.java |  2 +-
 .../hadoop/hive/ql/udf/generic/GenericUDFCbrt.java |  2 +-
 .../hive/ql/udf/generic/GenericUDFPower.java       |  2 +-
 ql/src/test/queries/clientpositive/udf_radians.q   |  9 ++--
 .../clientpositive/vector_decimal_math_funcs.q     |  8 +--
 .../queries/clientpositive/vector_decimal_udf2.q   |  6 ++-
 .../queries/clientpositive/vectorized_math_funcs.q |  3 +-
 .../results/clientpositive/llap/udf_radians.q.out  | 16 +++---
 .../llap/vector_decimal_math_funcs.q.out           | 60 ++++++++++++----------
 .../clientpositive/llap/vector_decimal_udf2.q.out  | 12 ++---
 .../llap/vectorized_math_funcs.q.out               | 28 +++++-----
 .../apache/hadoop/hive/tools/GenVectorCode.java    | 24 ++++-----
 21 files changed, 101 insertions(+), 89 deletions(-)

diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLogWithBaseDoubleToDouble.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLogWithBaseDoubleToDouble.java
index b799379d57c..5c9d220f762 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLogWithBaseDoubleToDouble.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLogWithBaseDoubleToDouble.java
@@ -40,7 +40,7 @@ public class FuncLogWithBaseDoubleToDouble extends MathFuncDoubleToDouble {
 
   @Override
   protected double func(double d) {
-    return Math.log(d) / Math.log(base);
+    return StrictMath.log(d) / StrictMath.log(base);
   }
 
   public double getBase() {
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLogWithBaseLongToDouble.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLogWithBaseLongToDouble.java
index f23783e376a..1ac288a9d22 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLogWithBaseLongToDouble.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLogWithBaseLongToDouble.java
@@ -40,7 +40,7 @@ public class FuncLogWithBaseLongToDouble extends MathFuncLongToDouble {
 
   @Override
   protected double func(long l) {
-    return Math.log((double) l) / Math.log(base);
+    return StrictMath.log((double) l) / StrictMath.log(base);
   }
 
   public double getBase() {
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncPowerDoubleToDouble.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncPowerDoubleToDouble.java
index 6b43a02785e..b25c06c9248 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncPowerDoubleToDouble.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncPowerDoubleToDouble.java
@@ -43,7 +43,7 @@ public class FuncPowerDoubleToDouble extends MathFuncDoubleToDouble {
 
   @Override
   public double func(double d) {
-    return Math.pow(d, power);
+    return StrictMath.pow(d, power);
   }
 
   public double getPower() {
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncPowerLongToDouble.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncPowerLongToDouble.java
index 3979f75318f..638160281ae 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncPowerLongToDouble.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncPowerLongToDouble.java
@@ -43,7 +43,7 @@ public class FuncPowerLongToDouble extends MathFuncLongToDouble {
 
   @Override
   public double func(long l) {
-    return Math.pow((double) l, power);
+    return StrictMath.pow((double) l, power);
   }
 
   public double getPower() {
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java
index 0ee0a599429..64a984fcffa 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java
@@ -48,7 +48,7 @@ public class UDFAcos extends UDFMath {
     if (d < -1 || d > 1) {
       return null;
     } else {
-      result.set(Math.acos(d));
+      result.set(StrictMath.acos(d));
       return result;
     }
   }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java
index 07c5ec748cc..5e1dba05828 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java
@@ -48,7 +48,7 @@ public class UDFAsin extends UDFMath {
     if (d < -1 || d > 1) {
       return null;
     } else {
-      result.set(Math.asin(d));
+      result.set(StrictMath.asin(d));
       return result;
     }
   }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java
index 4e35613d9f1..c941fd344e9 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java
@@ -37,7 +37,7 @@ public class UDFAtan extends UDFMath {
 
   @Override
   protected DoubleWritable doEvaluate(DoubleWritable a) {
-    result.set(Math.atan(a.get()));
+    result.set(StrictMath.atan(a.get()));
     return result;
   }
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java
index 62a598c02dd..860728516ff 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java
@@ -42,7 +42,7 @@ public class UDFSin extends UDFMath {
    */
   @Override
   protected DoubleWritable doEvaluate(DoubleWritable a) {
-    result.set(Math.sin(a.get()));
+    result.set(StrictMath.sin(a.get()));
     return result;
   }
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java
index 2285f9d424e..4c738253bd7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java
@@ -45,7 +45,7 @@ public class UDFSqrt extends UDFMath {
     if (a.get() < 0) {
       return null;
     } else {
-      result.set(Math.sqrt(a.get()));
+      result.set(StrictMath.sqrt(a.get()));
       return result;
     }
   }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java
index 97cfdef1d0a..3181a04c528 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java
@@ -40,7 +40,7 @@ public class UDFTan extends UDFMath {
    */
   @Override
   protected DoubleWritable doEvaluate(DoubleWritable a) {
-    result.set(Math.tan(a.get()));
+    result.set(StrictMath.tan(a.get()));
     return result;
   }
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCbrt.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCbrt.java
index 7a5fa314075..b7f14516743 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCbrt.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCbrt.java
@@ -64,7 +64,7 @@ public class GenericUDFCbrt extends GenericUDF {
       return null;
     }
 
-    double cbrt = Math.cbrt(val);
+    double cbrt = StrictMath.cbrt(val);
     output.set(cbrt);
     return output;
   }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFPower.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFPower.java
index 91f730a8cc9..f4464274e3e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFPower.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFPower.java
@@ -125,7 +125,7 @@ public class GenericUDFPower extends GenericUDF {
       return null;
     }
 
-    doubleWritable.set(Math.pow(((DoubleWritable)base).get(), ((DoubleWritable)power).get()));
+    doubleWritable.set(StrictMath.pow(((DoubleWritable)base).get(), ((DoubleWritable)power).get()));
     return doubleWritable;
   }
 
diff --git a/ql/src/test/queries/clientpositive/udf_radians.q b/ql/src/test/queries/clientpositive/udf_radians.q
index 9532bb34801..6d087562144 100644
--- a/ql/src/test/queries/clientpositive/udf_radians.q
+++ b/ql/src/test/queries/clientpositive/udf_radians.q
@@ -1,18 +1,19 @@
 --! qt:dataset:src
 set hive.fetch.task.conversion=more;
 
+-- Round to avoid decimal precision difference due to JDK-4477961
 explain
-select radians(57.2958) FROM src tablesample (1 rows);
+select round(radians(57.2958), 15) FROM src tablesample (1 rows);
 
-select radians(57.2958) FROM src tablesample (1 rows);
+select round(radians(57.2958), 15) FROM src tablesample (1 rows);
 select radians(143.2394) FROM src tablesample (1 rows);
 
 DESCRIBE FUNCTION radians;
 DESCRIBE FUNCTION EXTENDED radians;
 explain 
-select radians(57.2958) FROM src tablesample (1 rows);
+select round(radians(57.2958), 15) FROM src tablesample (1 rows);
 
-select radians(57.2958) FROM src tablesample (1 rows);
+select round(radians(57.2958), 15) FROM src tablesample (1 rows);
 select radians(143.2394) FROM src tablesample (1 rows);
 
 DESCRIBE FUNCTION radians;
diff --git a/ql/src/test/queries/clientpositive/vector_decimal_math_funcs.q b/ql/src/test/queries/clientpositive/vector_decimal_math_funcs.q
index 7ee7891eebe..862257cdafa 100644
--- a/ql/src/test/queries/clientpositive/vector_decimal_math_funcs.q
+++ b/ql/src/test/queries/clientpositive/vector_decimal_math_funcs.q
@@ -73,7 +73,8 @@ select
   ,Cos(cdecimal1)
   ,ACos(cdecimal1)
   ,Atan(cdecimal1)
-  ,Degrees(cdecimal1)
+  -- Round to avoid decimal precision difference due to JDK-4477961
+  ,Round(Degrees(cdecimal1), 9)
   ,Radians(cdecimal1)
   ,Positive(cdecimal1)
   ,Negative(cdecimal1)
@@ -150,8 +151,9 @@ select
   ,Cos(cdecimal1)
   ,ACos(cdecimal1)
   ,Atan(cdecimal1)
-  ,Degrees(cdecimal1)
-  ,Radians(cdecimal1)
+  -- Round to avoid decimal precision difference due to JDK-4477961
+  ,Round(Degrees(cdecimal1), 9)
+  ,Round(Radians(cdecimal1), 12)
   ,Positive(cdecimal1)
   ,Negative(cdecimal1)
   ,Sign(cdecimal1)
diff --git a/ql/src/test/queries/clientpositive/vector_decimal_udf2.q b/ql/src/test/queries/clientpositive/vector_decimal_udf2.q
index d88217b51f6..f1cf1eabc91 100644
--- a/ql/src/test/queries/clientpositive/vector_decimal_udf2.q
+++ b/ql/src/test/queries/clientpositive/vector_decimal_udf2.q
@@ -28,8 +28,9 @@ FROM DECIMAL_UDF2_n0 WHERE key = 10;
 SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
 FROM DECIMAL_UDF2_n0 WHERE key = 10;
 
+-- Round to avoid decimal precision difference due to JDK-4477961
 SELECT SUM(HASH(*))
-FROM (SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
+FROM (SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), round(radians(key),12)
 FROM DECIMAL_UDF2_n0) q;
 
 EXPLAIN VECTORIZATION DETAIL
@@ -61,8 +62,9 @@ FROM DECIMAL_UDF2_txt WHERE key = 10;
 SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
 FROM DECIMAL_UDF2_txt WHERE key = 10;
 
+-- Round to avoid decimal precision difference due to JDK-4477961
 SELECT SUM(HASH(*))
-FROM (SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
+FROM (SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), round(radians(key), 12)
 FROM DECIMAL_UDF2_txt) q;
 
 EXPLAIN VECTORIZATION DETAIL
diff --git a/ql/src/test/queries/clientpositive/vectorized_math_funcs.q b/ql/src/test/queries/clientpositive/vectorized_math_funcs.q
index f3c346b323c..4b942800410 100644
--- a/ql/src/test/queries/clientpositive/vectorized_math_funcs.q
+++ b/ql/src/test/queries/clientpositive/vectorized_math_funcs.q
@@ -95,7 +95,8 @@ select
   ,ACos(cdouble)
   ,Atan(cdouble)
   ,Degrees(cdouble)
-  ,Radians(cdouble)
+  -- Round to avoid decimal precision difference due to JDK-4477961
+  ,Round(Radians(cdouble), 12)
   ,Positive(cdouble)
   ,Positive(cbigint)
   ,Negative(cdouble)
diff --git a/ql/src/test/results/clientpositive/llap/udf_radians.q.out b/ql/src/test/results/clientpositive/llap/udf_radians.q.out
index 5f9c1527224..bdd208c8285 100644
--- a/ql/src/test/results/clientpositive/llap/udf_radians.q.out
+++ b/ql/src/test/results/clientpositive/llap/udf_radians.q.out
@@ -1,10 +1,10 @@
 PREHOOK: query: explain
-select radians(57.2958) FROM src tablesample (1 rows)
+select round(radians(57.2958), 15) FROM src tablesample (1 rows)
 PREHOOK: type: QUERY
 PREHOOK: Input: default@src
 #### A masked pattern was here ####
 POSTHOOK: query: explain
-select radians(57.2958) FROM src tablesample (1 rows)
+select round(radians(57.2958), 15) FROM src tablesample (1 rows)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@src
 #### A masked pattern was here ####
@@ -24,11 +24,11 @@ STAGE PLANS:
             outputColumnNames: _col0
             ListSink
 
-PREHOOK: query: select radians(57.2958) FROM src tablesample (1 rows)
+PREHOOK: query: select round(radians(57.2958), 15) FROM src tablesample (1 rows)
 PREHOOK: type: QUERY
 PREHOOK: Input: default@src
 #### A masked pattern was here ####
-POSTHOOK: query: select radians(57.2958) FROM src tablesample (1 rows)
+POSTHOOK: query: select round(radians(57.2958), 15) FROM src tablesample (1 rows)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@src
 #### A masked pattern was here ####
@@ -59,12 +59,12 @@ Example:
 Function class:org.apache.hadoop.hive.ql.udf.UDFRadians
 Function type:BUILTIN
 PREHOOK: query: explain 
-select radians(57.2958) FROM src tablesample (1 rows)
+select round(radians(57.2958), 15) FROM src tablesample (1 rows)
 PREHOOK: type: QUERY
 PREHOOK: Input: default@src
 #### A masked pattern was here ####
 POSTHOOK: query: explain 
-select radians(57.2958) FROM src tablesample (1 rows)
+select round(radians(57.2958), 15) FROM src tablesample (1 rows)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@src
 #### A masked pattern was here ####
@@ -84,11 +84,11 @@ STAGE PLANS:
             outputColumnNames: _col0
             ListSink
 
-PREHOOK: query: select radians(57.2958) FROM src tablesample (1 rows)
+PREHOOK: query: select round(radians(57.2958), 15) FROM src tablesample (1 rows)
 PREHOOK: type: QUERY
 PREHOOK: Input: default@src
 #### A masked pattern was here ####
-POSTHOOK: query: select radians(57.2958) FROM src tablesample (1 rows)
+POSTHOOK: query: select round(radians(57.2958), 15) FROM src tablesample (1 rows)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@src
 #### A masked pattern was here ####
diff --git a/ql/src/test/results/clientpositive/llap/vector_decimal_math_funcs.q.out b/ql/src/test/results/clientpositive/llap/vector_decimal_math_funcs.q.out
index d6950d5db9b..b2c3c3467ba 100644
--- a/ql/src/test/results/clientpositive/llap/vector_decimal_math_funcs.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_decimal_math_funcs.q.out
@@ -197,7 +197,8 @@ PREHOOK: query: select
   ,Cos(cdecimal1)
   ,ACos(cdecimal1)
   ,Atan(cdecimal1)
-  ,Degrees(cdecimal1)
+  -- Round to avoid decimal precision difference due to JDK-4477961
+  ,Round(Degrees(cdecimal1), 9)
   ,Radians(cdecimal1)
   ,Positive(cdecimal1)
   ,Negative(cdecimal1)
@@ -235,7 +236,8 @@ POSTHOOK: query: select
   ,Cos(cdecimal1)
   ,ACos(cdecimal1)
   ,Atan(cdecimal1)
-  ,Degrees(cdecimal1)
+  -- Round to avoid decimal precision difference due to JDK-4477961
+  ,Round(Degrees(cdecimal1), 9)
   ,Radians(cdecimal1)
   ,Positive(cdecimal1)
   ,Negative(cdecimal1)
@@ -250,17 +252,17 @@ and sin(cdecimal1) >= -1.0
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_test_n0
 #### A masked pattern was here ####
--119.4594594595	-119.46	-119	-120	-119	1.316485E-52	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	119.4594594595	-0.07885666683797002	NULL	0.9968859644388647	NULL	-1.5624254815943668	-6844.522849943508	-2.0849608902209606	-119.4594594595	119.4594594595	-1	NULL
-9318.4351351351	9318.44	9318	9318	9319	Infinity	9.13974998962673	3.969342986470191	13.185871984999437	NULL	13.185871984999437	173.867220004793	173.867220004793	96.53204201266593	9318.4351351351	0.4540668481851705	NULL	0.8909676185918236	NULL	1.5706890126394983	533907.0049096602	162.63737424163023	9318.4351351351	-9318.4351351351	1	-0.9607267417229353
-9318.4351351351	9318.44	9318	9318	9319	Infinity	9.13974998962673	3.969342986470191	13.185871984999437	NULL	13.185871984999437	173.867220004793	173.867220004793	96.53204201266593	9318.4351351351	0.4540668481851705	NULL	0.8909676185918236	NULL	1.5706890126394983	533907.0049096602	162.63737424163023	9318.4351351351	-9318.4351351351	1	-0.9607267417229353
-9318.4351351351	9318.44	9318	9318	9319	Infinity	9.13974998962673	3.969342986470191	13.185871984999437	NULL	13.185871984999437	173.867220004793	173.867220004793	96.53204201266593	9318.4351351351	0.4540668481851705	NULL	0.8909676185918236	NULL	1.5706890126394983	533907.0049096602	162.63737424163023	9318.4351351351	-9318.4351351351	1	-0.9607267417229353
--4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.93214088667	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
--4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.93214088667	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
--4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.93214088667	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
--4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.93214088667	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
--4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.93214088667	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
--4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.93214088667	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
--4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.93214088667	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
+-119.4594594595	-119.46	-119	-120	-119	1.316485E-52	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	119.4594594595	-0.07885666683797002	NULL	0.9968859644388647	NULL	-1.5624254815943668	-6844.522849944	-2.0849608902209606	-119.4594594595	119.4594594595	-1	NULL
+9318.4351351351	9318.44	9318	9318	9319	Infinity	9.13974998962673	3.969342986470191	13.185871984999437	NULL	13.185871984999437	173.867220004793	173.867220004793	96.53204201266593	9318.4351351351	0.4540668481851705	NULL	0.8909676185918236	NULL	1.5706890126394983	533907.00490966	162.63737424163023	9318.4351351351	-9318.4351351351	1	-0.9607267417229353
+9318.4351351351	9318.44	9318	9318	9319	Infinity	9.13974998962673	3.969342986470191	13.185871984999437	NULL	13.185871984999437	173.867220004793	173.867220004793	96.53204201266593	9318.4351351351	0.4540668481851705	NULL	0.8909676185918236	NULL	1.5706890126394983	533907.00490966	162.63737424163023	9318.4351351351	-9318.4351351351	1	-0.9607267417229353
+9318.4351351351	9318.44	9318	9318	9319	Infinity	9.13974998962673	3.969342986470191	13.185871984999437	NULL	13.185871984999437	173.867220004793	173.867220004793	96.53204201266593	9318.4351351351	0.4540668481851705	NULL	0.8909676185918236	NULL	1.5706890126394983	533907.00490966	162.63737424163023	9318.4351351351	-9318.4351351351	1	-0.9607267417229353
+-4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.932140887	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
+-4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.932140887	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
+-4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.932140887	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
+-4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.932140887	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
+-4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.932140887	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
+-4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.932140887	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
+-4298.1513513514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1513513514	-0.43730633941118113	NULL	0.899312607223313	NULL	-1.5705636686355597	-246265.932140887	-75.01689283012556	-4298.1513513514	4298.1513513514	-1	NULL
 PREHOOK: query: CREATE TABLE decimal_test_small STORED AS ORC AS SELECT cbigint, cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(12,4)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(14,8)) AS cdecimal2 FROM alltypesorc
 PREHOOK: type: CREATETABLE_AS_SELECT
 PREHOOK: Input: default@alltypesorc
@@ -448,8 +450,9 @@ PREHOOK: query: select
   ,Cos(cdecimal1)
   ,ACos(cdecimal1)
   ,Atan(cdecimal1)
-  ,Degrees(cdecimal1)
-  ,Radians(cdecimal1)
+  -- Round to avoid decimal precision difference due to JDK-4477961
+  ,Round(Degrees(cdecimal1), 9)
+  ,Round(Radians(cdecimal1), 12)
   ,Positive(cdecimal1)
   ,Negative(cdecimal1)
   ,Sign(cdecimal1)
@@ -486,8 +489,9 @@ POSTHOOK: query: select
   ,Cos(cdecimal1)
   ,ACos(cdecimal1)
   ,Atan(cdecimal1)
-  ,Degrees(cdecimal1)
-  ,Radians(cdecimal1)
+  -- Round to avoid decimal precision difference due to JDK-4477961
+  ,Round(Degrees(cdecimal1), 9)
+  ,Round(Radians(cdecimal1), 12)
   ,Positive(cdecimal1)
   ,Negative(cdecimal1)
   ,Sign(cdecimal1)
@@ -501,14 +505,14 @@ and sin(cdecimal1) >= -1.0
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_test_small
 #### A masked pattern was here ####
--119.4595	-119.46	-119	-120	-119	1.316432E-52	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	119.4595	-0.07889708102860798	NULL	0.9968827667309558	NULL	-1.562425484435015	-6844.525172743059	-2.084961597786166	-119.4595	119.4595	-1	NULL
-9318.4351	9318.44	9318	9318	9319	Infinity	9.139749985856234	3.9693429848326867	13.185871979559764	NULL	13.185871979559764	173.86721986133932	173.86721986133932	96.5320418306792	9318.4351	0.4540355436693385	NULL	0.8909835717255892	NULL	1.5706890126390936	533907.0028965673	162.63737362840706	9318.4351	-9318.4351	1	-0.9607267407188516
-9318.4351	9318.44	9318	9318	9319	Infinity	9.139749985856234	3.9693429848326867	13.185871979559764	NULL	13.185871979559764	173.86721986133932	173.86721986133932	96.5320418306792	9318.4351	0.4540355436693385	NULL	0.8909835717255892	NULL	1.5706890126390936	533907.0028965673	162.63737362840706	9318.4351	-9318.4351	1	-0.9607267407188516
-9318.4351	9318.44	9318	9318	9319	Infinity	9.139749985856234	3.9693429848326867	13.185871979559764	NULL	13.185871979559764	173.86721986133932	173.86721986133932	96.5320418306792	9318.4351	0.4540355436693385	NULL	0.8909835717255892	NULL	1.5706890126390936	533907.0028965673	162.63737362840706	9318.4351	-9318.4351	1	-0.9607267407188516
--4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.9349282461	-75.01689367920379	-4298.1514	4298.1514	-1	NULL
--4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.9349282461	-75.01689367920379	-4298.1514	4298.1514	-1	NULL
--4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.9349282461	-75.01689367920379	-4298.1514	4298.1514	-1	NULL
--4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.9349282461	-75.01689367920379	-4298.1514	4298.1514	-1	NULL
--4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.9349282461	-75.01689367920379	-4298.1514	4298.1514	-1	NULL
--4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.9349282461	-75.01689367920379	-4298.1514	4298.1514	-1	NULL
--4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.9349282461	-75.01689367920379	-4298.1514	4298.1514	-1	NULL
+-119.4595	-119.46	-119	-120	-119	1.316432E-52	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	119.4595	-0.07889708102860798	NULL	0.9968827667309558	NULL	-1.562425484435015	-6844.525172743	-2.084961597786	-119.4595	119.4595	-1	NULL
+9318.4351	9318.44	9318	9318	9319	Infinity	9.139749985856234	3.9693429848326867	13.185871979559764	NULL	13.185871979559764	173.86721986133932	173.86721986133932	96.5320418306792	9318.4351	0.4540355436693385	NULL	0.8909835717255892	NULL	1.5706890126390936	533907.002896567	162.637373628407	9318.4351	-9318.4351	1	-0.9607267407188516
+9318.4351	9318.44	9318	9318	9319	Infinity	9.139749985856234	3.9693429848326867	13.185871979559764	NULL	13.185871979559764	173.86721986133932	173.86721986133932	96.5320418306792	9318.4351	0.4540355436693385	NULL	0.8909835717255892	NULL	1.5706890126390936	533907.002896567	162.637373628407	9318.4351	-9318.4351	1	-0.9607267407188516
+9318.4351	9318.44	9318	9318	9319	Infinity	9.139749985856234	3.9693429848326867	13.185871979559764	NULL	13.185871979559764	173.86721986133932	173.86721986133932	96.5320418306792	9318.4351	0.4540355436693385	NULL	0.8909835717255892	NULL	1.5706890126390936	533907.002896567	162.637373628407	9318.4351	-9318.4351	1	-0.9607267407188516
+-4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.934928246	-75.016893679204	-4298.1514	4298.1514	-1	NULL
+-4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.934928246	-75.016893679204	-4298.1514	4298.1514	-1	NULL
+-4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.934928246	-75.016893679204	-4298.1514	4298.1514	-1	NULL
+-4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.934928246	-75.016893679204	-4298.1514	4298.1514	-1	NULL
+-4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.934928246	-75.016893679204	-4298.1514	4298.1514	-1	NULL
+-4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.934928246	-75.016893679204	-4298.1514	4298.1514	-1	NULL
+-4298.1514	-4298.15	-4298	-4299	-4298	0.0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	4298.1514	-0.4373500891926774	NULL	0.8992913318180917	NULL	-1.5705636686381932	-246265.934928246	-75.016893679204	-4298.1514	4298.1514	-1	NULL
diff --git a/ql/src/test/results/clientpositive/llap/vector_decimal_udf2.q.out b/ql/src/test/results/clientpositive/llap/vector_decimal_udf2.q.out
index 9039c7aec88..84ae82c1d12 100644
--- a/ql/src/test/results/clientpositive/llap/vector_decimal_udf2.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_decimal_udf2.q.out
@@ -154,18 +154,18 @@ POSTHOOK: Input: default@decimal_udf2_n0
 #### A masked pattern was here ####
 NULL	NULL	1.4711276743037347	-0.8390715290764524	-0.5440211108893698	0.6483608274590866	0.17453292519943295
 PREHOOK: query: SELECT SUM(HASH(*))
-FROM (SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
+FROM (SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), round(radians(key),12)
 FROM DECIMAL_UDF2_n0) q
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_udf2_n0
 #### A masked pattern was here ####
 POSTHOOK: query: SELECT SUM(HASH(*))
-FROM (SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
+FROM (SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), round(radians(key),12)
 FROM DECIMAL_UDF2_n0) q
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf2_n0
 #### A masked pattern was here ####
--3806982713
+-3762999953
 PREHOOK: query: EXPLAIN VECTORIZATION DETAIL
 SELECT
   exp(key), ln(key),
@@ -388,18 +388,18 @@ POSTHOOK: Input: default@decimal_udf2_txt
 #### A masked pattern was here ####
 NULL	NULL	1.4711276743037347	-0.8390715290764524	-0.5440211108893698	0.6483608274590866	0.17453292519943295
 PREHOOK: query: SELECT SUM(HASH(*))
-FROM (SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
+FROM (SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), round(radians(key), 12)
 FROM DECIMAL_UDF2_txt) q
 PREHOOK: type: QUERY
 PREHOOK: Input: default@decimal_udf2_txt
 #### A masked pattern was here ####
 POSTHOOK: query: SELECT SUM(HASH(*))
-FROM (SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
+FROM (SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), round(radians(key), 12)
 FROM DECIMAL_UDF2_txt) q
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@decimal_udf2_txt
 #### A masked pattern was here ####
--3806982713
+-3762999953
 PREHOOK: query: EXPLAIN VECTORIZATION DETAIL
 SELECT
   exp(key), ln(key),
diff --git a/ql/src/test/results/clientpositive/llap/vectorized_math_funcs.q.out b/ql/src/test/results/clientpositive/llap/vectorized_math_funcs.q.out
index 4e4ab7da1d5..187b5babf6d 100644
--- a/ql/src/test/results/clientpositive/llap/vectorized_math_funcs.q.out
+++ b/ql/src/test/results/clientpositive/llap/vectorized_math_funcs.q.out
@@ -209,7 +209,8 @@ PREHOOK: query: select
   ,ACos(cdouble)
   ,Atan(cdouble)
   ,Degrees(cdouble)
-  ,Radians(cdouble)
+  -- Round to avoid decimal precision difference due to JDK-4477961
+  ,Round(Radians(cdouble), 12)
   ,Positive(cdouble)
   ,Positive(cbigint)
   ,Negative(cdouble)
@@ -263,7 +264,8 @@ POSTHOOK: query: select
   ,ACos(cdouble)
   ,Atan(cdouble)
   ,Degrees(cdouble)
-  ,Radians(cdouble)
+  -- Round to avoid decimal precision difference due to JDK-4477961
+  ,Round(Radians(cdouble), 12)
   ,Positive(cdouble)
   ,Positive(cbigint)
   ,Negative(cdouble)
@@ -279,19 +281,19 @@ and sin(cfloat) >= -1.0
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@alltypesorc
 #### A masked pattern was here ####
--200.0	-200.0	-200	-200	0.8199077823142826	NULL	NULL	NULL	NULL	NULL	NULL	NULL	30.57531565116074	NULL	NULL	NULL	NULL	NULL	NULL	NULL	39998.48747140321	1011111010111000011011101011000	2D3230302E30	5F5C3758	200.0	36	NULL	0.8732972972139946	NULL	0.4871876750070059	NULL	-1.5657963684609384	-11459.155902616465	-3.490658503988659	-200.0	1599879000	200.0	-1.0	1.0	NULL
-15601.0	15601.0	15601	15601	0.38656833237681376	15601.00000000001	9.65509029374725	NULL	4.193152436852078	13.929350886124324	NULL	NULL	NULL	NULL	13.929350886124324	NULL	13.929350886124324	194.02681610877246	194.02681610877246	124.90396310766124	NULL	1111111111111111111111111111111110010001001101101010100000011000	31353630312E30	FFFFFFFF9136A818	15601.0	38	NULL	-0.14856570831397706	NULL	0.9889025383288114	NULL	1.5707322283397571	893871.4561835973	272.2888166036353	15601.0	-1858689000	-156 [...]
-15601.0	15601.0	15601	15601	0.41161398527282966	15601.00000000001	9.65509029374725	NULL	4.193152436852078	13.929350886124324	NULL	NULL	29.18993673432575	NULL	13.929350886124324	NULL	13.929350886124324	194.02681610877246	194.02681610877246	124.90396310766124	24747.04022706554	100100100000001011101000000000	31353630312E30	2480BA00	15601.0	5	NULL	-0.14856570831397706	NULL	0.9889025383288114	NULL	1.5707322283397571	893871.4561835973	272.2888166036353	15601.0	612416000	-15601.0	1.0	1.0	-0.974 [...]
-15601.0	15601.0	15601	15601	0.37807863784568585	15601.00000000001	9.65509029374725	3.8712010109078907	4.193152436852078	13.929350886124324	NULL	5.584962500721156	NULL	NULL	13.929350886124324	5.584962500721156	13.929350886124324	194.02681610877246	194.02681610877246	124.90396310766124	NULL	1111111111111111111111111111111111010000100101111100000100011000	31353630312E30	FFFFFFFFD097C118	15601.0	48	NULL	-0.14856570831397706	NULL	0.9889025383288114	NULL	1.5707322283397571	893871.4561835973	27 [...]
+-200.0	-200.0	-200	-200	0.8199077823142826	NULL	NULL	NULL	NULL	NULL	NULL	NULL	30.57531565116074	NULL	NULL	NULL	NULL	NULL	NULL	NULL	39998.48747140321	1011111010111000011011101011000	2D3230302E30	5F5C3758	200.0	36	NULL	0.8732972972139946	NULL	0.4871876750070059	NULL	-1.5657963684609384	-11459.155902616465	-3.490658503989	-200.0	1599879000	200.0	-1.0	1.0	NULL
+15601.0	15601.0	15601	15601	0.38656833237681376	15601.00000000001	9.65509029374725	NULL	4.193152436852078	13.929350886124324	NULL	NULL	NULL	NULL	13.929350886124324	NULL	13.929350886124324	194.02681610877246	194.02681610877246	124.90396310766124	NULL	1111111111111111111111111111111110010001001101101010100000011000	31353630312E30	FFFFFFFF9136A818	15601.0	38	NULL	-0.14856570831397706	NULL	0.9889025383288114	NULL	1.5707322283397571	893871.4561835973	272.288816603635	15601.0	-1858689000	-1560 [...]
+15601.0	15601.0	15601	15601	0.41161398527282966	15601.00000000001	9.65509029374725	NULL	4.193152436852078	13.929350886124324	NULL	NULL	29.18993673432575	NULL	13.929350886124324	NULL	13.929350886124324	194.02681610877246	194.02681610877246	124.90396310766124	24747.04022706554	100100100000001011101000000000	31353630312E30	2480BA00	15601.0	5	NULL	-0.14856570831397706	NULL	0.9889025383288114	NULL	1.5707322283397571	893871.4561835973	272.288816603635	15601.0	612416000	-15601.0	1.0	1.0	-0.9740 [...]
+15601.0	15601.0	15601	15601	0.37807863784568585	15601.00000000001	9.65509029374725	3.8712010109078907	4.193152436852078	13.929350886124324	NULL	5.584962500721156	NULL	NULL	13.929350886124324	5.584962500721156	13.929350886124324	194.02681610877246	194.02681610877246	124.90396310766124	NULL	1111111111111111111111111111111111010000100101111100000100011000	31353630312E30	FFFFFFFFD097C118	15601.0	48	NULL	-0.14856570831397706	NULL	0.9889025383288114	NULL	1.5707322283397571	893871.4561835973	27 [...]
 NULL	NULL	NULL	NULL	0.3336458983920575	NULL	NULL	2.0794415416798357	NULL	NULL	NULL	3.0	29.693388204506274	29.58473549442715	NULL	3.0	NULL	NULL	NULL	NULL	29464.580431426475	110011101111110001011111011100	NULL	33BF17DC	NULL	8	1	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	868161500	NULL	NULL	1.0	NULL
 NULL	NULL	NULL	NULL	0.8681331660942196	NULL	NULL	2.0794415416798357	NULL	NULL	NULL	3.0	NULL	29.730832334348488	NULL	3.0	NULL	NULL	NULL	NULL	NULL	1111111111111111111111111111111110010000111111111000101010111000	NULL	FFFFFFFF90FF8AB8	NULL	8	0	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	-1862301000	NULL	NULL	-1.0	NULL
--7196.0	-7196.0	-7196	-7196	0.03951015606275099	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	1111111111111111111111111111111110100000010101110101001001110000	2D373139362E30	FFFFFFFFA0575270	7196.0	59	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.59389297351194	-7196.0	-1604890000	7196.0	-1.0	-1.0	NULL
--7196.0	-7196.0	-7196	-7196	0.9209252022050654	NULL	NULL	NULL	NULL	NULL	NULL	NULL	30.52255693577237	NULL	NULL	NULL	NULL	NULL	NULL	NULL	39273.76987252433	1011011111011111001100101001000	2D373139362E30	5BEF9948	7196.0	21	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.59389297351194	-7196.0	1542429000	7196.0	-1.0	1.0	NULL
--7196.0	-7196.0	-7196	-7196	0.4533660450429132	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	1111111111111111111111111111111110100011011110110101000010110100	2D373139362E30	FFFFFFFFA37B50B4	7196.0	14	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.59389297351194	-7196.0	-1552199500	7196.0	-1.0	-1.0	NULL
--7196.0	-7196.0	-7196	-7196	0.14567136069921982	NULL	NULL	4.07753744390572	NULL	NULL	NULL	5.882643049361842	NULL	NULL	NULL	5.882643049361842	NULL	NULL	NULL	NULL	NULL	1111111111111111111111111111111110111100001011110011111001111100	2D373139362E30	FFFFFFFFBC2F3E7C	7196.0	59	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.59389297351194	-7196.0	-1137754500	7196.0	-1.0	-1.0	NULL
--7196.0	-7196.0	-7196	-7196	0.5264452612398715	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	1111111111111111111111111111111110010001101110110101111010110100	2D373139362E30	FFFFFFFF91BB5EB4	7196.0	8	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.59389297351194	-7196.0	-1849991500	7196.0	-1.0	-1.0	NULL
--7196.0	-7196.0	-7196	-7196	0.17837094616515647	NULL	NULL	1.6094379124341003	NULL	NULL	NULL	2.321928094887362	NULL	NULL	NULL	2.321928094887362	NULL	NULL	NULL	NULL	NULL	1111111111111111111111111111111111000011011101110000111100110100	2D373139362E30	FFFFFFFFC3770F34	7196.0	5	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.59389297351194	-7196.0	-1015607500	7196.0	-1.0	-1.0	NULL
--7196.0	-7196.0	-7196	-7196	0.5456857574763374	NULL	NULL	NULL	NULL	NULL	NULL	NULL	29.62699001935971	NULL	NULL	NULL	NULL	NULL	NULL	NULL	28794.287627930647	110001011010110011101011011000	2D373139362E30	316B3AD8	7196.0	24	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.59389297351194	-7196.0	829111000	7196.0	-1.0	1.0	NULL
+-7196.0	-7196.0	-7196	-7196	0.03951015606275099	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	1111111111111111111111111111111110100000010101110101001001110000	2D373139362E30	FFFFFFFFA0575270	7196.0	59	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.593892973512	-7196.0	-1604890000	7196.0	-1.0	-1.0	NULL
+-7196.0	-7196.0	-7196	-7196	0.9209252022050654	NULL	NULL	NULL	NULL	NULL	NULL	NULL	30.52255693577237	NULL	NULL	NULL	NULL	NULL	NULL	NULL	39273.76987252433	1011011111011111001100101001000	2D373139362E30	5BEF9948	7196.0	21	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.593892973512	-7196.0	1542429000	7196.0	-1.0	1.0	NULL
+-7196.0	-7196.0	-7196	-7196	0.4533660450429132	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	1111111111111111111111111111111110100011011110110101000010110100	2D373139362E30	FFFFFFFFA37B50B4	7196.0	14	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.593892973512	-7196.0	-1552199500	7196.0	-1.0	-1.0	NULL
+-7196.0	-7196.0	-7196	-7196	0.14567136069921982	NULL	NULL	4.07753744390572	NULL	NULL	NULL	5.882643049361842	NULL	NULL	NULL	5.882643049361842	NULL	NULL	NULL	NULL	NULL	1111111111111111111111111111111110111100001011110011111001111100	2D373139362E30	FFFFFFFFBC2F3E7C	7196.0	59	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.593892973512	-7196.0	-1137754500	7196.0	-1.0	-1.0	NULL
+-7196.0	-7196.0	-7196	-7196	0.5264452612398715	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	1111111111111111111111111111111110010001101110110101111010110100	2D373139362E30	FFFFFFFF91BB5EB4	7196.0	8	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.593892973512	-7196.0	-1849991500	7196.0	-1.0	-1.0	NULL
+-7196.0	-7196.0	-7196	-7196	0.17837094616515647	NULL	NULL	1.6094379124341003	NULL	NULL	NULL	2.321928094887362	NULL	NULL	NULL	2.321928094887362	NULL	NULL	NULL	NULL	NULL	1111111111111111111111111111111111000011011101110000111100110100	2D373139362E30	FFFFFFFFC3770F34	7196.0	5	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.593892973512	-7196.0	-1015607500	7196.0	-1.0	-1.0	NULL
+-7196.0	-7196.0	-7196	-7196	0.5456857574763374	NULL	NULL	NULL	NULL	NULL	NULL	NULL	29.62699001935971	NULL	NULL	NULL	NULL	NULL	NULL	NULL	28794.287627930647	110001011010110011101011011000	2D373139362E30	316B3AD8	7196.0	24	NULL	-0.9834787875028149	NULL	-0.18102340879563897	NULL	-1.5706573607035177	-412300.4293761404	-125.593892973512	-7196.0	829111000	7196.0	-1.0	1.0	NULL
 NULL	NULL	NULL	NULL	0.282703740641956	NULL	NULL	2.3978952727983707	NULL	NULL	NULL	3.4594316186372978	30.19990821555368	NULL	NULL	3.4594316186372978	NULL	NULL	NULL	NULL	35118.75567271711	1001001100000110001001110011000	NULL	49831398	NULL	11	1	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	1233327000	NULL	NULL	1.0	NULL
 PREHOOK: query: select
     cdouble
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 998b19cb0e2..8054a6a2af0 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
@@ -1084,34 +1084,34 @@ public class GenVectorCode extends Task {
         "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);", ""},
       // Log(base, Col) is a special case and will be implemented separately from this template
       // Pow(col, P) and Power(col, P) are special cases implemented separately from this template
-      {"ColumnUnaryFunc", "FuncSqrt", "double", "double", "Math.sqrt", "", "",
+      {"ColumnUnaryFunc", "FuncSqrt", "double", "double", "StrictMath.sqrt", "", "",
         "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""},
-      {"ColumnUnaryFunc", "FuncSqrt", "double", "long", "Math.sqrt", "(double)", "",
+      {"ColumnUnaryFunc", "FuncSqrt", "double", "long", "StrictMath.sqrt", "(double)", "",
         "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""},
-      {"ColumnUnaryFunc", "FuncASin", "double", "double", "Math.asin", "", "",
+      {"ColumnUnaryFunc", "FuncASin", "double", "double", "StrictMath.asin", "", "",
         "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""},
-      {"ColumnUnaryFunc", "FuncASin", "double", "long", "Math.asin", "(double)", "",
+      {"ColumnUnaryFunc", "FuncASin", "double", "long", "StrictMath.asin", "(double)", "",
         "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""},
-      {"ColumnUnaryFunc", "FuncACos", "double", "double", "Math.acos", "", "",
+      {"ColumnUnaryFunc", "FuncACos", "double", "double", "StrictMath.acos", "", "",
         "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""},
-      {"ColumnUnaryFunc", "FuncACos", "double", "long", "Math.acos", "(double)", "",
+      {"ColumnUnaryFunc", "FuncACos", "double", "long", "StrictMath.acos", "(double)", "",
         "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""},
       {"ColumnUnaryFunc", "FuncAbs", "double", "double", "Math.abs", "", "", "", ""},
       {"ColumnUnaryFunc", "FuncAbs", "long", "long", "MathExpr.abs", "", "", "", ""},
-      {"ColumnUnaryFunc", "FuncSin", "double", "double", "Math.sin", "", "", "", ""},
-      {"ColumnUnaryFunc", "FuncSin", "double", "long", "Math.sin", "(double)", "", "", ""},
+      {"ColumnUnaryFunc", "FuncSin", "double", "double", "StrictMath.sin", "", "", "", ""},
+      {"ColumnUnaryFunc", "FuncSin", "double", "long", "StrictMath.sin", "(double)", "", "", ""},
       {"ColumnUnaryFunc", "FuncSinh", "double", "double", "StrictMath.sinh", "", "", "", ""},
       {"ColumnUnaryFunc", "FuncSinh", "double", "long", "StrictMath.sinh", "(double)", "", "", ""},
       {"ColumnUnaryFunc", "FuncCos", "double", "double", "StrictMath.cos", "", "", "", ""},
       {"ColumnUnaryFunc", "FuncCos", "double", "long", "StrictMath.cos", "(double)", "", "", ""},
       {"ColumnUnaryFunc", "FuncCosh", "double", "double", "StrictMath.cosh", "", "", "", ""},
       {"ColumnUnaryFunc", "FuncCosh", "double", "long", "StrictMath.cosh", "(double)", "", "", ""},
-      {"ColumnUnaryFunc", "FuncTan", "double", "double", "Math.tan", "", "", "", ""},
-      {"ColumnUnaryFunc", "FuncTan", "double", "long", "Math.tan", "(double)", "", "", ""},
+      {"ColumnUnaryFunc", "FuncTan", "double", "double", "StrictMath.tan", "", "", "", ""},
+      {"ColumnUnaryFunc", "FuncTan", "double", "long", "StrictMath.tan", "(double)", "", "", ""},
       {"ColumnUnaryFunc", "FuncTanh", "double", "double", "StrictMath.tanh", "", "", "", ""},
       {"ColumnUnaryFunc", "FuncTanh", "double", "long", "StrictMath.tanh", "(double)", "", "", ""},
-      {"ColumnUnaryFunc", "FuncATan", "double", "double", "Math.atan", "", "", "", ""},
-      {"ColumnUnaryFunc", "FuncATan", "double", "long", "Math.atan", "(double)", "", "", ""},
+      {"ColumnUnaryFunc", "FuncATan", "double", "double", "StrictMath.atan", "", "", "", ""},
+      {"ColumnUnaryFunc", "FuncATan", "double", "long", "StrictMath.atan", "(double)", "", "", ""},
       {"ColumnUnaryFunc", "FuncDegrees", "double", "double", "Math.toDegrees", "", "", "", ""},
       {"ColumnUnaryFunc", "FuncDegrees", "double", "long", "Math.toDegrees", "(double)", "", "", ""},
       {"ColumnUnaryFunc", "FuncRadians", "double", "double", "Math.toRadians", "", "", "", ""},