You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ch...@apache.org on 2020/05/14 08:36:14 UTC

[hive] branch master updated: HIVE-23133: Numeric operations can have different result across hardware archs (Zhenyu Zheng, reviewed by Chinna Rao L)

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

chinnaraol 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 ce53f3e  HIVE-23133: Numeric operations can have different result across hardware archs (Zhenyu Zheng, reviewed by Chinna Rao L)
ce53f3e is described below

commit ce53f3eb85d6d38ad46409270cc2868b8c4bc302
Author: Zhenyu Zheng <zh...@gmail.com>
AuthorDate: Thu May 14 14:02:13 2020 +0530

    HIVE-23133: Numeric operations can have different result across hardware archs (Zhenyu Zheng, reviewed by Chinna Rao L)
---
 .../hadoop/hive/ql/exec/vector/expressions/MathExpr.java |  2 +-
 ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java    |  2 +-
 ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java    |  2 +-
 ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java     |  2 +-
 ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java    |  4 ++--
 ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java  |  2 +-
 ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java   |  4 ++--
 .../results/clientpositive/llap/subquery_select.q.out    |  6 +++---
 .../clientpositive/llap/vector_decimal_udf2.q.out        |  8 ++++----
 .../clientpositive/llap/vectorized_math_funcs.q.out      |  2 +-
 .../results/clientpositive/spark/subquery_select.q.out   |  6 +++---
 .../clientpositive/spark/vectorized_math_funcs.q.out     |  2 +-
 .../src/org/apache/hadoop/hive/tools/GenVectorCode.java  | 16 ++++++++--------
 13 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathExpr.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathExpr.java
index 0722392..4acd149 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathExpr.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathExpr.java
@@ -58,7 +58,7 @@ public class MathExpr {
   }
 
   public static double log2(double d) {
-    return Math.log(d) / Math.log(2);
+    return StrictMath.log(d) / StrictMath.log(2);
   }
 
   public static long abs(long v) {
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 fdbca0c..97820e5 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 @@ public class UDFCos extends UDFMath {
    */
   @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 305d432..a05489d 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 @@ public class UDFExp extends UDFMath {
    */
   @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/UDFLn.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java
index e2c2afd..7832a67 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java
@@ -45,7 +45,7 @@ public class UDFLn extends UDFMath {
     if (a.get() <= 0.0) {
       return null;
     } else {
-      result.set(Math.log(a.get()));
+      result.set(StrictMath.log(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 21723cd..4f69ade 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 @@ public class UDFLog extends UDFMath {
     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 @@ public class UDFLog extends UDFMath {
     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/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java
index 7c2358c..9a11515 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java
@@ -45,7 +45,7 @@ public class UDFLog10 extends UDFMath {
     if (a.get() <= 0.0) {
       return null;
     } else {
-      result.set(Math.log10(a.get()));
+      result.set(StrictMath.log10(a.get()));
       return result;
     }
   }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java
index 135f8c4..4de6a1b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java
@@ -35,7 +35,7 @@ import org.apache.hadoop.hive.serde2.io.DoubleWritable;
 @VectorizedExpressions({FuncLog2LongToDouble.class, FuncLog2DoubleToDouble.class})
 public class UDFLog2 extends UDFMath {
 
-  private static final double LOG_2 = Math.log(2.0);
+  private static final double LOG_2 = StrictMath.log(2.0);
 
   private final DoubleWritable result = new DoubleWritable();
 
@@ -47,7 +47,7 @@ public class UDFLog2 extends UDFMath {
     if (a.get() <= 0.0) {
       return null;
     } else {
-      result.set(Math.log(a.get()) / LOG_2);
+      result.set(StrictMath.log(a.get()) / LOG_2);
       return result;
     }
   }
diff --git a/ql/src/test/results/clientpositive/llap/subquery_select.q.out b/ql/src/test/results/clientpositive/llap/subquery_select.q.out
index 9104a19..b171ed3 100644
--- a/ql/src/test/results/clientpositive/llap/subquery_select.q.out
+++ b/ql/src/test/results/clientpositive/llap/subquery_select.q.out
@@ -5970,14 +5970,14 @@ POSTHOOK: query: SELECT p_size, exp((SELECT max(p_size) FROM part p WHERE p.p_ty
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@part
 #### A masked pattern was here ####
-1	2.718281828459045
+1	2.7182818284590455
 10	22026.465794806718
 12	162754.79141900392
 14	1202604.2841647768
 14	1202604.2841647768
 17	2.9048849665247426E13
 18	6.565996913733051E7
-19	1.7848230096318725E8
+19	1.7848230096318728E8
 2	7.38905609893065
 2	7.38905609893065
 2	7.38905609893065
@@ -5989,7 +5989,7 @@ POSTHOOK: Input: default@part
 31	2.9048849665247426E13
 34	5.834617425274549E14
 39	8.6593400423993744E16
-40	2.3538526683702E17
+40	2.35385266837019968E17
 42	1.73927494152050099E18
 45	3.4934271057485095E19
 46	9.496119420602448E19
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 7c1fe9e..6b1859b 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
@@ -165,7 +165,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),
@@ -291,7 +291,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
@@ -399,7 +399,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),
@@ -525,7 +525,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/ql/src/test/results/clientpositive/llap/vectorized_math_funcs.q.out b/ql/src/test/results/clientpositive/llap/vectorized_math_funcs.q.out
index 9febde9..e5f71d1 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
@@ -282,7 +282,7 @@ POSTHOOK: Input: default@alltypesorc
 -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.871201010907891	4.193152436852078	13.929350886124324	NULL	5.584962500721157	NULL	NULL	13.929350886124324	5.584962500721157	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	272 [...]
+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
diff --git a/ql/src/test/results/clientpositive/spark/subquery_select.q.out b/ql/src/test/results/clientpositive/spark/subquery_select.q.out
index cbd3321..3f1a1d3 100644
--- a/ql/src/test/results/clientpositive/spark/subquery_select.q.out
+++ b/ql/src/test/results/clientpositive/spark/subquery_select.q.out
@@ -5908,14 +5908,14 @@ POSTHOOK: query: SELECT p_size, exp((SELECT max(p_size) FROM part p WHERE p.p_ty
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@part
 #### A masked pattern was here ####
-1	2.718281828459045
+1	2.7182818284590455
 10	22026.465794806718
 12	162754.79141900392
 14	1202604.2841647768
 14	1202604.2841647768
 17	2.9048849665247426E13
 18	6.565996913733051E7
-19	1.7848230096318725E8
+19	1.7848230096318728E8
 2	7.38905609893065
 2	7.38905609893065
 2	7.38905609893065
@@ -5927,7 +5927,7 @@ POSTHOOK: Input: default@part
 31	2.9048849665247426E13
 34	5.834617425274549E14
 39	8.6593400423993744E16
-40	2.3538526683702E17
+40	2.35385266837019968E17
 42	1.73927494152050099E18
 45	3.4934271057485095E19
 46	9.496119420602448E19
diff --git a/ql/src/test/results/clientpositive/spark/vectorized_math_funcs.q.out b/ql/src/test/results/clientpositive/spark/vectorized_math_funcs.q.out
index fde2124..6963784 100644
--- a/ql/src/test/results/clientpositive/spark/vectorized_math_funcs.q.out
+++ b/ql/src/test/results/clientpositive/spark/vectorized_math_funcs.q.out
@@ -281,7 +281,7 @@ POSTHOOK: Input: default@alltypesorc
 -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.871201010907891	4.193152436852078	13.929350886124324	NULL	5.584962500721157	NULL	NULL	13.929350886124324	5.584962500721157	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	272 [...]
+15601.0	15601.0	15601	15601	0.37807863784568585	15601.00000000001	9.65509029374725	3.8712010109078907	4.193152436852078	13.929350886124324	NULL	5.584962500721157	NULL	NULL	13.929350886124324	5.584962500721157	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
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 cc413c8..54e06a5 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,15 +1067,15 @@ public class GenVectorCode extends Task {
       {"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", "", "",
+      {"ColumnUnaryFunc", "FuncLog10", "double", "double", "StrictMath.log10", "", "",
         "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);", ""},
-      {"ColumnUnaryFunc", "FuncLog10", "double", "long", "Math.log10", "(double)", "",
+      {"ColumnUnaryFunc", "FuncLog10", "double", "long", "StrictMath.log10", "(double)", "",
         "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);", ""},
       // The MathExpr class contains helper functions for cases when existing library
       // routines can't be used directly.
@@ -1101,8 +1101,8 @@ public class GenVectorCode extends Task {
       {"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", "", "", "", ""},