blob: d029311a52893d98970452a1dd567b9c6eefe91c [file] [log] [blame]
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001/*
2 * Copyright (C) 2013 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Elliott Hughes1b37ba22014-11-03 17:03:20 -080017#define _GNU_SOURCE 1
18#include <math.h>
19
Narayan Kamath5f6f4a92014-02-19 15:42:58 +000020// This include (and the associated definition of __test_capture_signbit)
21// must be placed before any files that include <cmath> (gtest.h in this case).
22//
23// <math.h> is required to define generic macros signbit, isfinite and
24// several other such functions.
25//
26// <cmath> is required to undef declarations of these macros in the global
27// namespace and make equivalent functions available in namespace std. Our
28// stlport implementation does this only for signbit, isfinite, isinf and
29// isnan.
30//
31// NOTE: We don't write our test using std::signbit because we want to be
32// sure that we're testing the bionic version of signbit. The C++ libraries
33// are free to reimplement signbit or delegate to compiler builtins if they
34// please.
Narayan Kamath5f6f4a92014-02-19 15:42:58 +000035
36namespace {
37template<typename T> inline int test_capture_signbit(const T in) {
38 return signbit(in);
39}
40template<typename T> inline int test_capture_isfinite(const T in) {
41 return isfinite(in);
42}
43template<typename T> inline int test_capture_isnan(const T in) {
44 return isnan(in);
45}
46template<typename T> inline int test_capture_isinf(const T in) {
47 return isinf(in);
48}
49}
50
Elliott Hughes50cda382017-09-14 15:30:08 -070051#if defined(__BIONIC_LP32_USE_LONG_DOUBLE)
52#define MATH_TEST math_h_force_long_double
53#else
54#define MATH_TEST math_h
55#endif
56
Elliott Hughes1b37ba22014-11-03 17:03:20 -080057#include "math_data_test.h"
58
Elliott Hughesa0ee0782013-01-30 19:06:37 -080059#include <gtest/gtest.h>
60
61#include <fenv.h>
Brian Carlstrom133bd092014-03-24 16:45:18 -070062#include <float.h>
Elliott Hughesa0ee0782013-01-30 19:06:37 -080063#include <limits.h>
Elliott Hughesa0ee0782013-01-30 19:06:37 -080064#include <stdint.h>
65
Tom Cherry98f016f2017-04-05 16:20:29 -070066#include <android-base/scopeguard.h>
Dmitriy Ivanov7b956ed2014-09-04 12:47:07 -070067
Elliott Hughes50cda382017-09-14 15:30:08 -070068static float float_subnormal() {
Elliott Hughesa0ee0782013-01-30 19:06:37 -080069 union {
70 float f;
71 uint32_t i;
72 } u;
73 u.i = 0x007fffff;
74 return u.f;
75}
76
Elliott Hughes50cda382017-09-14 15:30:08 -070077static double double_subnormal() {
Elliott Hughesa0ee0782013-01-30 19:06:37 -080078 union {
79 double d;
80 uint64_t i;
81 } u;
Elliott Hughes52276632013-02-12 20:18:49 -080082 u.i = 0x000fffffffffffffLL;
Elliott Hughesa0ee0782013-01-30 19:06:37 -080083 return u.d;
84}
85
Elliott Hughes50cda382017-09-14 15:30:08 -070086static long double ldouble_subnormal() {
Calin Juravle4d77c112014-03-14 17:56:46 +000087 union {
88 long double e;
89 unsigned char c[sizeof(long double)];
90 } u;
91
92 // Subnormals must have a zero exponent and non zero significand.
93 // On all supported representation the 17 bit (counting from either sides)
94 // is part of the significand so it should be enough to set that.
95 // It also applies for the case sizeof(double) = sizeof(long double)
96 for (unsigned int i = 0; i < sizeof(long double); i++) {
97 u.c[i] = 0x00;
98 }
99 u.c[sizeof(long double) - 3] = 0x80;
100 u.c[2] = 0x80;
101
102 return u.e;
103}
104
Elliott Hughes50cda382017-09-14 15:30:08 -0700105TEST(MATH_TEST, fpclassify) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800106 ASSERT_EQ(FP_INFINITE, fpclassify(INFINITY));
107 ASSERT_EQ(FP_INFINITE, fpclassify(HUGE_VALF));
108 ASSERT_EQ(FP_INFINITE, fpclassify(HUGE_VAL));
Calin Juravle4d77c112014-03-14 17:56:46 +0000109 ASSERT_EQ(FP_INFINITE, fpclassify(HUGE_VALL));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800110
111 ASSERT_EQ(FP_NAN, fpclassify(nanf("")));
112 ASSERT_EQ(FP_NAN, fpclassify(nan("")));
Calin Juravle4d77c112014-03-14 17:56:46 +0000113 ASSERT_EQ(FP_NAN, fpclassify(nanl("")));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800114
115 ASSERT_EQ(FP_NORMAL, fpclassify(1.0f));
116 ASSERT_EQ(FP_NORMAL, fpclassify(1.0));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100117 ASSERT_EQ(FP_NORMAL, fpclassify(1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800118
119 ASSERT_EQ(FP_SUBNORMAL, fpclassify(float_subnormal()));
120 ASSERT_EQ(FP_SUBNORMAL, fpclassify(double_subnormal()));
Calin Juravle4d77c112014-03-14 17:56:46 +0000121 ASSERT_EQ(FP_SUBNORMAL, fpclassify(ldouble_subnormal()));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800122
123 ASSERT_EQ(FP_ZERO, fpclassify(0.0f));
124 ASSERT_EQ(FP_ZERO, fpclassify(0.0));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100125 ASSERT_EQ(FP_ZERO, fpclassify(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800126}
127
Elliott Hughes50cda382017-09-14 15:30:08 -0700128TEST(MATH_TEST, isfinite) {
Narayan Kamath5f6f4a92014-02-19 15:42:58 +0000129 ASSERT_TRUE(test_capture_isfinite(123.0f));
130 ASSERT_TRUE(test_capture_isfinite(123.0));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100131 ASSERT_TRUE(test_capture_isfinite(123.0L));
Narayan Kamath5f6f4a92014-02-19 15:42:58 +0000132 ASSERT_FALSE(test_capture_isfinite(HUGE_VALF));
133 ASSERT_FALSE(test_capture_isfinite(HUGE_VAL));
Calin Juravle4d77c112014-03-14 17:56:46 +0000134 ASSERT_FALSE(test_capture_isfinite(HUGE_VALL));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800135}
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800136
Elliott Hughes50cda382017-09-14 15:30:08 -0700137TEST(MATH_TEST, isinf) {
Narayan Kamath5f6f4a92014-02-19 15:42:58 +0000138 ASSERT_FALSE(test_capture_isinf(123.0f));
139 ASSERT_FALSE(test_capture_isinf(123.0));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100140 ASSERT_FALSE(test_capture_isinf(123.0L));
Narayan Kamath5f6f4a92014-02-19 15:42:58 +0000141 ASSERT_TRUE(test_capture_isinf(HUGE_VALF));
142 ASSERT_TRUE(test_capture_isinf(HUGE_VAL));
Calin Juravle4d77c112014-03-14 17:56:46 +0000143 ASSERT_TRUE(test_capture_isinf(HUGE_VALL));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800144}
145
Elliott Hughes50cda382017-09-14 15:30:08 -0700146TEST(MATH_TEST, isnan) {
Narayan Kamath5f6f4a92014-02-19 15:42:58 +0000147 ASSERT_FALSE(test_capture_isnan(123.0f));
148 ASSERT_FALSE(test_capture_isnan(123.0));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100149 ASSERT_FALSE(test_capture_isnan(123.0L));
Narayan Kamath5f6f4a92014-02-19 15:42:58 +0000150 ASSERT_TRUE(test_capture_isnan(nanf("")));
151 ASSERT_TRUE(test_capture_isnan(nan("")));
Calin Juravle4d77c112014-03-14 17:56:46 +0000152 ASSERT_TRUE(test_capture_isnan(nanl("")));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800153}
154
Elliott Hughes50cda382017-09-14 15:30:08 -0700155TEST(MATH_TEST, isnormal) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800156 ASSERT_TRUE(isnormal(123.0f));
157 ASSERT_TRUE(isnormal(123.0));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100158 ASSERT_TRUE(isnormal(123.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800159 ASSERT_FALSE(isnormal(float_subnormal()));
160 ASSERT_FALSE(isnormal(double_subnormal()));
Calin Juravle4d77c112014-03-14 17:56:46 +0000161 ASSERT_FALSE(isnormal(ldouble_subnormal()));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800162}
163
164// TODO: isgreater, isgreaterequals, isless, islessequal, islessgreater, isunordered
Elliott Hughes50cda382017-09-14 15:30:08 -0700165TEST(MATH_TEST, signbit) {
Narayan Kamath5f6f4a92014-02-19 15:42:58 +0000166 ASSERT_EQ(0, test_capture_signbit(0.0f));
167 ASSERT_EQ(0, test_capture_signbit(0.0));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100168 ASSERT_EQ(0, test_capture_signbit(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800169
Narayan Kamath5f6f4a92014-02-19 15:42:58 +0000170 ASSERT_EQ(0, test_capture_signbit(1.0f));
171 ASSERT_EQ(0, test_capture_signbit(1.0));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100172 ASSERT_EQ(0, test_capture_signbit(1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800173
Narayan Kamath5f6f4a92014-02-19 15:42:58 +0000174 ASSERT_NE(0, test_capture_signbit(-1.0f));
175 ASSERT_NE(0, test_capture_signbit(-1.0));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100176 ASSERT_NE(0, test_capture_signbit(-1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800177}
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800178
Elliott Hughes5c6a7bf2017-10-19 13:56:28 -0700179// Historical BSD cruft that isn't exposed in <math.h> any more.
Elliott Hughes9ecd2cc2017-11-01 22:17:26 -0700180extern "C" int __fpclassify(double);
Elliott Hughes5c6a7bf2017-10-19 13:56:28 -0700181extern "C" int __fpclassifyd(double);
182extern "C" int __fpclassifyf(float);
183extern "C" int __fpclassifyl(long double);
184
Elliott Hughes9ecd2cc2017-11-01 22:17:26 -0700185TEST(MATH_TEST, __fpclassify) {
186 ASSERT_EQ(FP_INFINITE, __fpclassify(HUGE_VAL));
187 ASSERT_EQ(FP_NAN, __fpclassify(nan("")));
188 ASSERT_EQ(FP_NORMAL, __fpclassify(1.0));
189 ASSERT_EQ(FP_SUBNORMAL, __fpclassify(double_subnormal()));
190 ASSERT_EQ(FP_ZERO, __fpclassify(0.0));
191}
192
Elliott Hughes50cda382017-09-14 15:30:08 -0700193TEST(MATH_TEST, __fpclassifyd) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -0800194#if defined(__GLIBC__)
195#define __fpclassifyd __fpclassify
196#endif
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800197 ASSERT_EQ(FP_INFINITE, __fpclassifyd(HUGE_VAL));
198 ASSERT_EQ(FP_NAN, __fpclassifyd(nan("")));
199 ASSERT_EQ(FP_NORMAL, __fpclassifyd(1.0));
200 ASSERT_EQ(FP_SUBNORMAL, __fpclassifyd(double_subnormal()));
201 ASSERT_EQ(FP_ZERO, __fpclassifyd(0.0));
202}
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800203
Elliott Hughes50cda382017-09-14 15:30:08 -0700204TEST(MATH_TEST, __fpclassifyf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800205 ASSERT_EQ(FP_INFINITE, __fpclassifyf(HUGE_VALF));
206 ASSERT_EQ(FP_NAN, __fpclassifyf(nanf("")));
207 ASSERT_EQ(FP_NORMAL, __fpclassifyf(1.0f));
208 ASSERT_EQ(FP_SUBNORMAL, __fpclassifyf(float_subnormal()));
209 ASSERT_EQ(FP_ZERO, __fpclassifyf(0.0f));
210}
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800211
Elliott Hughes50cda382017-09-14 15:30:08 -0700212TEST(MATH_TEST, __fpclassifyl) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800213 EXPECT_EQ(FP_INFINITE, __fpclassifyl(HUGE_VALL));
214 EXPECT_EQ(FP_NAN, __fpclassifyl(nanl("")));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100215 EXPECT_EQ(FP_NORMAL, __fpclassifyl(1.0L));
Calin Juravle4d77c112014-03-14 17:56:46 +0000216 EXPECT_EQ(FP_SUBNORMAL, __fpclassifyl(ldouble_subnormal()));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100217 EXPECT_EQ(FP_ZERO, __fpclassifyl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800218}
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800219
Elliott Hughes50cda382017-09-14 15:30:08 -0700220TEST(MATH_TEST, finitef) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800221 ASSERT_TRUE(finitef(123.0f));
222 ASSERT_FALSE(finitef(HUGE_VALF));
223}
224
Elliott Hughes5c6a7bf2017-10-19 13:56:28 -0700225// Historical BSD cruft that isn't exposed in <math.h> any more.
226extern "C" int __isfinite(double);
227extern "C" int __isfinitef(float);
228extern "C" int __isfinitel(long double);
229
Elliott Hughes50cda382017-09-14 15:30:08 -0700230TEST(MATH_TEST, __isfinite) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -0800231#if defined(__GLIBC__)
232#define __isfinite __finite
233#endif
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800234 ASSERT_TRUE(__isfinite(123.0));
235 ASSERT_FALSE(__isfinite(HUGE_VAL));
236}
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800237
Elliott Hughes50cda382017-09-14 15:30:08 -0700238TEST(MATH_TEST, __isfinitef) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -0800239#if defined(__GLIBC__)
240#define __isfinitef __finitef
241#endif
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800242 ASSERT_TRUE(__isfinitef(123.0f));
243 ASSERT_FALSE(__isfinitef(HUGE_VALF));
244}
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800245
Elliott Hughes50cda382017-09-14 15:30:08 -0700246TEST(MATH_TEST, __isfinitel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -0800247#if defined(__GLIBC__)
248#define __isfinitel __finitel
249#endif
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100250 ASSERT_TRUE(__isfinitel(123.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800251 ASSERT_FALSE(__isfinitel(HUGE_VALL));
252}
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800253
Elliott Hughes50cda382017-09-14 15:30:08 -0700254TEST(MATH_TEST, finite) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800255 ASSERT_TRUE(finite(123.0));
256 ASSERT_FALSE(finite(HUGE_VAL));
257}
258
Elliott Hughes50cda382017-09-14 15:30:08 -0700259TEST(MATH_TEST, isinf_function) {
Elliott Hughes02c78a32014-04-11 17:02:20 -0700260 // The isinf macro deals with all three types; the isinf function is for doubles.
261 ASSERT_FALSE((isinf)(123.0));
262 ASSERT_TRUE((isinf)(HUGE_VAL));
263}
264
Elliott Hughes5c6a7bf2017-10-19 13:56:28 -0700265// Historical BSD cruft that isn't exposed in <math.h> any more.
Elliott Hughes9ecd2cc2017-11-01 22:17:26 -0700266extern "C" int __isinf(double);
Elliott Hughes5c6a7bf2017-10-19 13:56:28 -0700267extern "C" int __isinff(float);
268extern "C" int __isinfl(long double);
269
Elliott Hughes9ecd2cc2017-11-01 22:17:26 -0700270TEST(MATH_TEST, __isinf) {
271 ASSERT_FALSE(__isinf(123.0));
272 ASSERT_TRUE(__isinf(HUGE_VAL));
273}
274
Elliott Hughes50cda382017-09-14 15:30:08 -0700275TEST(MATH_TEST, __isinff) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800276 ASSERT_FALSE(__isinff(123.0f));
277 ASSERT_TRUE(__isinff(HUGE_VALF));
278}
279
Elliott Hughes50cda382017-09-14 15:30:08 -0700280TEST(MATH_TEST, __isinfl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100281 ASSERT_FALSE(__isinfl(123.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800282 ASSERT_TRUE(__isinfl(HUGE_VALL));
283}
284
Elliott Hughes50cda382017-09-14 15:30:08 -0700285TEST(MATH_TEST, isnan_function) {
Elliott Hughes02c78a32014-04-11 17:02:20 -0700286 // The isnan macro deals with all three types; the isnan function is for doubles.
287 ASSERT_FALSE((isnan)(123.0));
288 ASSERT_TRUE((isnan)(nan("")));
289}
290
Elliott Hughes5c6a7bf2017-10-19 13:56:28 -0700291// Historical BSD cruft that isn't exposed in <math.h> any more.
Elliott Hughes9ecd2cc2017-11-01 22:17:26 -0700292extern "C" int __isnan(double);
Elliott Hughes5c6a7bf2017-10-19 13:56:28 -0700293extern "C" int __isnanf(float);
294extern "C" int __isnanl(long double);
295
Elliott Hughes9ecd2cc2017-11-01 22:17:26 -0700296TEST(MATH_TEST, __isnan) {
297 ASSERT_FALSE(__isnan(123.0));
298 ASSERT_TRUE(__isnan(nan("")));
299}
300
Elliott Hughes50cda382017-09-14 15:30:08 -0700301TEST(MATH_TEST, __isnanf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800302 ASSERT_FALSE(__isnanf(123.0f));
303 ASSERT_TRUE(__isnanf(nanf("")));
304}
305
Elliott Hughes50cda382017-09-14 15:30:08 -0700306TEST(MATH_TEST, __isnanl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100307 ASSERT_FALSE(__isnanl(123.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800308 ASSERT_TRUE(__isnanl(nanl("")));
309}
310
Elliott Hughes50cda382017-09-14 15:30:08 -0700311TEST(MATH_TEST, isnanf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800312 ASSERT_FALSE(isnanf(123.0f));
313 ASSERT_TRUE(isnanf(nanf("")));
314}
315
Elliott Hughes5c6a7bf2017-10-19 13:56:28 -0700316// Historical BSD cruft that isn't exposed in <math.h> any more.
317extern "C" int __isnormal(double);
318extern "C" int __isnormalf(float);
319extern "C" int __isnormall(long double);
320
Elliott Hughes50cda382017-09-14 15:30:08 -0700321TEST(MATH_TEST, __isnormal) {
Christopher Ferrisf04935c2013-12-20 18:43:21 -0800322#if defined(__BIONIC__)
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800323 ASSERT_TRUE(__isnormal(123.0));
324 ASSERT_FALSE(__isnormal(double_subnormal()));
Christopher Ferrisf04935c2013-12-20 18:43:21 -0800325#else // __BIONIC__
Elliott Hughes1b37ba22014-11-03 17:03:20 -0800326 GTEST_LOG_(INFO) << "glibc doesn't have __isnormal.\n";
Christopher Ferrisf04935c2013-12-20 18:43:21 -0800327#endif // __BIONIC__
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800328}
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800329
Elliott Hughes50cda382017-09-14 15:30:08 -0700330TEST(MATH_TEST, __isnormalf) {
Christopher Ferrisf04935c2013-12-20 18:43:21 -0800331#if defined(__BIONIC__)
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800332 ASSERT_TRUE(__isnormalf(123.0f));
333 ASSERT_FALSE(__isnormalf(float_subnormal()));
Christopher Ferrisf04935c2013-12-20 18:43:21 -0800334#else // __BIONIC__
Elliott Hughes1b37ba22014-11-03 17:03:20 -0800335 GTEST_LOG_(INFO) << "glibc doesn't have __isnormalf.\n";
Christopher Ferrisf04935c2013-12-20 18:43:21 -0800336#endif // __BIONIC__
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800337}
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800338
Elliott Hughes50cda382017-09-14 15:30:08 -0700339TEST(MATH_TEST, __isnormall) {
Christopher Ferrisf04935c2013-12-20 18:43:21 -0800340#if defined(__BIONIC__)
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100341 ASSERT_TRUE(__isnormall(123.0L));
Calin Juravle4d77c112014-03-14 17:56:46 +0000342 ASSERT_FALSE(__isnormall(ldouble_subnormal()));
Christopher Ferrisf04935c2013-12-20 18:43:21 -0800343#else // __BIONIC__
Elliott Hughes1b37ba22014-11-03 17:03:20 -0800344 GTEST_LOG_(INFO) << "glibc doesn't have __isnormall.\n";
Christopher Ferrisf04935c2013-12-20 18:43:21 -0800345#endif // __BIONIC__
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800346}
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800347
Elliott Hughes5c6a7bf2017-10-19 13:56:28 -0700348// Historical BSD cruft that isn't exposed in <math.h> any more.
349extern "C" int __signbit(double);
350extern "C" int __signbitf(float);
351extern "C" int __signbitl(long double);
352
Elliott Hughes50cda382017-09-14 15:30:08 -0700353TEST(MATH_TEST, __signbit) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800354 ASSERT_EQ(0, __signbit(0.0));
355 ASSERT_EQ(0, __signbit(1.0));
356 ASSERT_NE(0, __signbit(-1.0));
357}
358
Elliott Hughes50cda382017-09-14 15:30:08 -0700359TEST(MATH_TEST, __signbitf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800360 ASSERT_EQ(0, __signbitf(0.0f));
361 ASSERT_EQ(0, __signbitf(1.0f));
362 ASSERT_NE(0, __signbitf(-1.0f));
363}
364
Elliott Hughes50cda382017-09-14 15:30:08 -0700365TEST(MATH_TEST, __signbitl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100366 ASSERT_EQ(0L, __signbitl(0.0L));
367 ASSERT_EQ(0L, __signbitl(1.0L));
368 ASSERT_NE(0L, __signbitl(-1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800369}
370
Elliott Hughes50cda382017-09-14 15:30:08 -0700371TEST(MATH_TEST, acos) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000372 ASSERT_DOUBLE_EQ(M_PI/2.0, acos(0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800373}
374
Elliott Hughes50cda382017-09-14 15:30:08 -0700375TEST(MATH_TEST, acosf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800376 ASSERT_FLOAT_EQ(static_cast<float>(M_PI)/2.0f, acosf(0.0f));
377}
378
Elliott Hughes50cda382017-09-14 15:30:08 -0700379TEST(MATH_TEST, acosl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100380 ASSERT_DOUBLE_EQ(M_PI/2.0L, acosl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800381}
382
Elliott Hughes50cda382017-09-14 15:30:08 -0700383TEST(MATH_TEST, asin) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000384 ASSERT_DOUBLE_EQ(0.0, asin(0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800385}
386
Elliott Hughes50cda382017-09-14 15:30:08 -0700387TEST(MATH_TEST, asinf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800388 ASSERT_FLOAT_EQ(0.0f, asinf(0.0f));
389}
390
Elliott Hughes50cda382017-09-14 15:30:08 -0700391TEST(MATH_TEST, asinl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100392 ASSERT_DOUBLE_EQ(0.0L, asinl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800393}
394
Elliott Hughes50cda382017-09-14 15:30:08 -0700395TEST(MATH_TEST, atan) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000396 ASSERT_DOUBLE_EQ(0.0, atan(0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800397}
398
Elliott Hughes50cda382017-09-14 15:30:08 -0700399TEST(MATH_TEST, atanf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800400 ASSERT_FLOAT_EQ(0.0f, atanf(0.0f));
401}
402
Elliott Hughes50cda382017-09-14 15:30:08 -0700403TEST(MATH_TEST, atanl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100404 ASSERT_DOUBLE_EQ(0.0L, atanl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800405}
406
Elliott Hughes50cda382017-09-14 15:30:08 -0700407TEST(MATH_TEST, atan2) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000408 ASSERT_DOUBLE_EQ(0.0, atan2(0.0, 0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800409}
410
Elliott Hughes50cda382017-09-14 15:30:08 -0700411TEST(MATH_TEST, atan2f) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800412 ASSERT_FLOAT_EQ(0.0f, atan2f(0.0f, 0.0f));
413}
414
Elliott Hughes50cda382017-09-14 15:30:08 -0700415TEST(MATH_TEST, atan2l) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100416 ASSERT_DOUBLE_EQ(0.0L, atan2l(0.0L, 0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800417}
418
Elliott Hughes50cda382017-09-14 15:30:08 -0700419TEST(MATH_TEST, cos) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000420 ASSERT_DOUBLE_EQ(1.0, cos(0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800421}
422
Elliott Hughes50cda382017-09-14 15:30:08 -0700423TEST(MATH_TEST, cosf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800424 ASSERT_FLOAT_EQ(1.0f, cosf(0.0f));
425}
426
Elliott Hughes50cda382017-09-14 15:30:08 -0700427TEST(MATH_TEST, cosl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100428 ASSERT_DOUBLE_EQ(1.0L, cosl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800429}
430
Elliott Hughes50cda382017-09-14 15:30:08 -0700431TEST(MATH_TEST, sin) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100432 ASSERT_DOUBLE_EQ(0.0, sin(0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800433}
434
Elliott Hughes50cda382017-09-14 15:30:08 -0700435TEST(MATH_TEST, sinf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800436 ASSERT_FLOAT_EQ(0.0f, sinf(0.0f));
437}
438
Elliott Hughes50cda382017-09-14 15:30:08 -0700439TEST(MATH_TEST, sinl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100440 ASSERT_DOUBLE_EQ(0.0L, sinl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800441}
442
Elliott Hughes50cda382017-09-14 15:30:08 -0700443TEST(MATH_TEST, sincos) {
Elliott Hughese9719f32016-09-26 09:35:04 -0700444 double s, c;
445 sincos(0.0, &s, &c);
446 ASSERT_DOUBLE_EQ(0.0, s);
447 ASSERT_DOUBLE_EQ(1.0, c);
448}
449
Elliott Hughes50cda382017-09-14 15:30:08 -0700450TEST(MATH_TEST, sincosf) {
Elliott Hughese9719f32016-09-26 09:35:04 -0700451 float s, c;
452 sincosf(0.0f, &s, &c);
453 ASSERT_FLOAT_EQ(0.0f, s);
454 ASSERT_FLOAT_EQ(1.0f, c);
455}
456
Elliott Hughes50cda382017-09-14 15:30:08 -0700457TEST(MATH_TEST, sincosl) {
Elliott Hughese9719f32016-09-26 09:35:04 -0700458 long double s, c;
459 sincosl(0.0L, &s, &c);
460 ASSERT_DOUBLE_EQ(0.0L, s);
461 ASSERT_DOUBLE_EQ(1.0L, c);
462}
463
Elliott Hughes50cda382017-09-14 15:30:08 -0700464TEST(MATH_TEST, tan) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000465 ASSERT_DOUBLE_EQ(0.0, tan(0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800466}
467
Elliott Hughes50cda382017-09-14 15:30:08 -0700468TEST(MATH_TEST, tanf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800469 ASSERT_FLOAT_EQ(0.0f, tanf(0.0f));
470}
471
Elliott Hughes50cda382017-09-14 15:30:08 -0700472TEST(MATH_TEST, tanl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100473 ASSERT_DOUBLE_EQ(0.0L, tanl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800474}
475
Elliott Hughes50cda382017-09-14 15:30:08 -0700476TEST(MATH_TEST, acosh) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000477 ASSERT_DOUBLE_EQ(0.0, acosh(1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800478}
479
Elliott Hughes50cda382017-09-14 15:30:08 -0700480TEST(MATH_TEST, acoshf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800481 ASSERT_FLOAT_EQ(0.0f, acoshf(1.0f));
482}
483
Elliott Hughes50cda382017-09-14 15:30:08 -0700484TEST(MATH_TEST, acoshl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100485 ASSERT_DOUBLE_EQ(0.0L, acoshl(1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800486}
487
Elliott Hughes50cda382017-09-14 15:30:08 -0700488TEST(MATH_TEST, asinh) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000489 ASSERT_DOUBLE_EQ(0.0, asinh(0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800490}
491
Elliott Hughes50cda382017-09-14 15:30:08 -0700492TEST(MATH_TEST, asinhf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800493 ASSERT_FLOAT_EQ(0.0f, asinhf(0.0f));
494}
495
Elliott Hughes50cda382017-09-14 15:30:08 -0700496TEST(MATH_TEST, asinhl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100497 ASSERT_DOUBLE_EQ(0.0L, asinhl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800498}
499
Elliott Hughes50cda382017-09-14 15:30:08 -0700500TEST(MATH_TEST, atanh) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000501 ASSERT_DOUBLE_EQ(0.0, atanh(0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800502}
503
Elliott Hughes50cda382017-09-14 15:30:08 -0700504TEST(MATH_TEST, atanhf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800505 ASSERT_FLOAT_EQ(0.0f, atanhf(0.0f));
506}
507
Elliott Hughes50cda382017-09-14 15:30:08 -0700508TEST(MATH_TEST, atanhl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100509 ASSERT_DOUBLE_EQ(0.0L, atanhl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800510}
511
Elliott Hughes50cda382017-09-14 15:30:08 -0700512TEST(MATH_TEST, cosh) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000513 ASSERT_DOUBLE_EQ(1.0, cosh(0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800514}
515
Elliott Hughes50cda382017-09-14 15:30:08 -0700516TEST(MATH_TEST, coshf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800517 ASSERT_FLOAT_EQ(1.0f, coshf(0.0f));
518}
519
Elliott Hughes50cda382017-09-14 15:30:08 -0700520TEST(MATH_TEST, coshl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100521 ASSERT_DOUBLE_EQ(1.0L, coshl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800522}
523
Elliott Hughes50cda382017-09-14 15:30:08 -0700524TEST(MATH_TEST, sinh) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000525 ASSERT_DOUBLE_EQ(0.0, sinh(0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800526}
527
Elliott Hughes50cda382017-09-14 15:30:08 -0700528TEST(MATH_TEST, sinhf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800529 ASSERT_FLOAT_EQ(0.0f, sinhf(0.0f));
530}
531
Elliott Hughes50cda382017-09-14 15:30:08 -0700532TEST(MATH_TEST, sinhl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100533 ASSERT_DOUBLE_EQ(0.0L, sinhl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800534}
535
Elliott Hughes50cda382017-09-14 15:30:08 -0700536TEST(MATH_TEST, tanh) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000537 ASSERT_DOUBLE_EQ(0.0, tanh(0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800538}
539
Elliott Hughes50cda382017-09-14 15:30:08 -0700540TEST(MATH_TEST, tanhf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800541 ASSERT_FLOAT_EQ(0.0f, tanhf(0.0f));
542}
543
Elliott Hughes50cda382017-09-14 15:30:08 -0700544TEST(MATH_TEST, tanhl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100545 ASSERT_DOUBLE_EQ(0.0L, tanhl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800546}
547
Elliott Hughes50cda382017-09-14 15:30:08 -0700548TEST(MATH_TEST, log) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000549 ASSERT_DOUBLE_EQ(1.0, log(M_E));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800550}
551
Elliott Hughes50cda382017-09-14 15:30:08 -0700552TEST(MATH_TEST, logf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800553 ASSERT_FLOAT_EQ(1.0f, logf(static_cast<float>(M_E)));
554}
555
Elliott Hughes50cda382017-09-14 15:30:08 -0700556TEST(MATH_TEST, logl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100557 ASSERT_DOUBLE_EQ(1.0L, logl(M_E));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800558}
559
Elliott Hughes50cda382017-09-14 15:30:08 -0700560TEST(MATH_TEST, log2) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000561 ASSERT_DOUBLE_EQ(12.0, log2(4096.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800562}
563
Elliott Hughes50cda382017-09-14 15:30:08 -0700564TEST(MATH_TEST, log2f) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800565 ASSERT_FLOAT_EQ(12.0f, log2f(4096.0f));
566}
567
Elliott Hughes50cda382017-09-14 15:30:08 -0700568TEST(MATH_TEST, log2l) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100569 ASSERT_DOUBLE_EQ(12.0L, log2l(4096.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800570}
571
Elliott Hughes50cda382017-09-14 15:30:08 -0700572TEST(MATH_TEST, log10) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000573 ASSERT_DOUBLE_EQ(3.0, log10(1000.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800574}
575
Elliott Hughes50cda382017-09-14 15:30:08 -0700576TEST(MATH_TEST, log10f) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800577 ASSERT_FLOAT_EQ(3.0f, log10f(1000.0f));
578}
579
Elliott Hughes50cda382017-09-14 15:30:08 -0700580TEST(MATH_TEST, log10l) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100581 ASSERT_DOUBLE_EQ(3.0L, log10l(1000.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800582}
583
Elliott Hughes50cda382017-09-14 15:30:08 -0700584TEST(MATH_TEST, cbrt) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000585 ASSERT_DOUBLE_EQ(3.0, cbrt(27.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800586}
587
Elliott Hughes50cda382017-09-14 15:30:08 -0700588TEST(MATH_TEST, cbrtf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800589 ASSERT_FLOAT_EQ(3.0f, cbrtf(27.0f));
590}
591
Elliott Hughes50cda382017-09-14 15:30:08 -0700592TEST(MATH_TEST, cbrtl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100593 ASSERT_DOUBLE_EQ(3.0L, cbrtl(27.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800594}
595
Elliott Hughes50cda382017-09-14 15:30:08 -0700596TEST(MATH_TEST, sqrt) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000597 ASSERT_DOUBLE_EQ(2.0, sqrt(4.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800598}
599
Elliott Hughes50cda382017-09-14 15:30:08 -0700600TEST(MATH_TEST, sqrtf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800601 ASSERT_FLOAT_EQ(2.0f, sqrtf(4.0f));
602}
603
Elliott Hughes50cda382017-09-14 15:30:08 -0700604TEST(MATH_TEST, sqrtl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100605 ASSERT_DOUBLE_EQ(2.0L, sqrtl(4.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800606}
607
Elliott Hughes50cda382017-09-14 15:30:08 -0700608TEST(MATH_TEST, exp) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000609 ASSERT_DOUBLE_EQ(1.0, exp(0.0));
610 ASSERT_DOUBLE_EQ(M_E, exp(1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800611}
612
Elliott Hughes50cda382017-09-14 15:30:08 -0700613TEST(MATH_TEST, expf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800614 ASSERT_FLOAT_EQ(1.0f, expf(0.0f));
615 ASSERT_FLOAT_EQ(static_cast<float>(M_E), expf(1.0f));
616}
617
Elliott Hughes50cda382017-09-14 15:30:08 -0700618TEST(MATH_TEST, expl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100619 ASSERT_DOUBLE_EQ(1.0L, expl(0.0L));
620 ASSERT_DOUBLE_EQ(M_E, expl(1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800621}
622
Elliott Hughes50cda382017-09-14 15:30:08 -0700623TEST(MATH_TEST, exp2) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000624 ASSERT_DOUBLE_EQ(8.0, exp2(3.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800625}
626
Elliott Hughes50cda382017-09-14 15:30:08 -0700627TEST(MATH_TEST, exp2f) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800628 ASSERT_FLOAT_EQ(8.0f, exp2f(3.0f));
629}
630
Elliott Hughes50cda382017-09-14 15:30:08 -0700631TEST(MATH_TEST, exp2l) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100632 ASSERT_DOUBLE_EQ(8.0L, exp2l(3.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800633}
634
Elliott Hughes50cda382017-09-14 15:30:08 -0700635TEST(MATH_TEST, expm1) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000636 ASSERT_DOUBLE_EQ(M_E - 1.0, expm1(1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800637}
638
Elliott Hughes50cda382017-09-14 15:30:08 -0700639TEST(MATH_TEST, expm1f) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800640 ASSERT_FLOAT_EQ(static_cast<float>(M_E) - 1.0f, expm1f(1.0f));
641}
642
Elliott Hughes50cda382017-09-14 15:30:08 -0700643TEST(MATH_TEST, expm1l) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100644 ASSERT_DOUBLE_EQ(M_E - 1.0L, expm1l(1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800645}
646
Elliott Hughes50cda382017-09-14 15:30:08 -0700647TEST(MATH_TEST, pow) {
Elliott Hughes6a8f00d2013-11-13 13:29:23 -0800648 ASSERT_TRUE(isnan(pow(nan(""), 3.0)));
Calin Juravle4d77c112014-03-14 17:56:46 +0000649 ASSERT_DOUBLE_EQ(1.0, (pow(1.0, nan(""))));
Elliott Hughes6a8f00d2013-11-13 13:29:23 -0800650 ASSERT_TRUE(isnan(pow(2.0, nan(""))));
Calin Juravle4d77c112014-03-14 17:56:46 +0000651 ASSERT_DOUBLE_EQ(8.0, pow(2.0, 3.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800652}
653
Elliott Hughes50cda382017-09-14 15:30:08 -0700654TEST(MATH_TEST, powf) {
Elliott Hughes6a8f00d2013-11-13 13:29:23 -0800655 ASSERT_TRUE(isnanf(powf(nanf(""), 3.0f)));
Narayan Kamathaf64dad2013-11-18 18:47:48 +0000656 ASSERT_FLOAT_EQ(1.0f, (powf(1.0f, nanf(""))));
Elliott Hughes6a8f00d2013-11-13 13:29:23 -0800657 ASSERT_TRUE(isnanf(powf(2.0f, nanf(""))));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800658 ASSERT_FLOAT_EQ(8.0f, powf(2.0f, 3.0f));
659}
660
Elliott Hughes50cda382017-09-14 15:30:08 -0700661TEST(MATH_TEST, powl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100662 ASSERT_TRUE(__isnanl(powl(nanl(""), 3.0L)));
663 ASSERT_DOUBLE_EQ(1.0L, (powl(1.0L, nanl(""))));
664 ASSERT_TRUE(__isnanl(powl(2.0L, nanl(""))));
665 ASSERT_DOUBLE_EQ(8.0L, powl(2.0L, 3.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800666}
667
Elliott Hughes50cda382017-09-14 15:30:08 -0700668TEST(MATH_TEST, ceil) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000669 ASSERT_DOUBLE_EQ(1.0, ceil(0.9));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800670}
671
Elliott Hughes50cda382017-09-14 15:30:08 -0700672TEST(MATH_TEST, ceilf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800673 ASSERT_FLOAT_EQ(1.0f, ceilf(0.9f));
674}
675
Elliott Hughes50cda382017-09-14 15:30:08 -0700676TEST(MATH_TEST, ceill) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100677 ASSERT_DOUBLE_EQ(1.0L, ceill(0.9L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800678}
679
Elliott Hughes50cda382017-09-14 15:30:08 -0700680TEST(MATH_TEST, floor) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000681 ASSERT_DOUBLE_EQ(1.0, floor(1.1));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800682}
683
Elliott Hughes50cda382017-09-14 15:30:08 -0700684TEST(MATH_TEST, floorf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800685 ASSERT_FLOAT_EQ(1.0f, floorf(1.1f));
686}
687
Elliott Hughes50cda382017-09-14 15:30:08 -0700688TEST(MATH_TEST, floorl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100689 ASSERT_DOUBLE_EQ(1.0L, floorl(1.1L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800690}
691
Elliott Hughes50cda382017-09-14 15:30:08 -0700692TEST(MATH_TEST, fabs) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000693 ASSERT_DOUBLE_EQ(1.0, fabs(-1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800694}
695
Elliott Hughes50cda382017-09-14 15:30:08 -0700696TEST(MATH_TEST, fabsf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800697 ASSERT_FLOAT_EQ(1.0f, fabsf(-1.0f));
698}
699
Elliott Hughes50cda382017-09-14 15:30:08 -0700700TEST(MATH_TEST, fabsl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100701 ASSERT_DOUBLE_EQ(1.0L, fabsl(-1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800702}
703
Elliott Hughes50cda382017-09-14 15:30:08 -0700704TEST(MATH_TEST, ldexp) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000705 ASSERT_DOUBLE_EQ(16.0, ldexp(2.0, 3.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800706}
707
Elliott Hughes50cda382017-09-14 15:30:08 -0700708TEST(MATH_TEST, ldexpf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800709 ASSERT_FLOAT_EQ(16.0f, ldexpf(2.0f, 3.0f));
710}
711
Elliott Hughes50cda382017-09-14 15:30:08 -0700712TEST(MATH_TEST, ldexpl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100713 ASSERT_DOUBLE_EQ(16.0L, ldexpl(2.0L, 3.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800714}
715
Elliott Hughes50cda382017-09-14 15:30:08 -0700716TEST(MATH_TEST, fmod) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000717 ASSERT_DOUBLE_EQ(2.0, fmod(12.0, 10.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800718}
719
Elliott Hughes50cda382017-09-14 15:30:08 -0700720TEST(MATH_TEST, fmodf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800721 ASSERT_FLOAT_EQ(2.0f, fmodf(12.0f, 10.0f));
722}
723
Elliott Hughes50cda382017-09-14 15:30:08 -0700724TEST(MATH_TEST, fmodl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100725 ASSERT_DOUBLE_EQ(2.0L, fmodl(12.0L, 10.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800726}
727
Elliott Hughes50cda382017-09-14 15:30:08 -0700728TEST(MATH_TEST, remainder) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000729 ASSERT_DOUBLE_EQ(2.0, remainder(12.0, 10.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800730}
731
Elliott Hughes50cda382017-09-14 15:30:08 -0700732TEST(MATH_TEST, remainderf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800733 ASSERT_FLOAT_EQ(2.0f, remainderf(12.0f, 10.0f));
734}
735
Elliott Hughes50cda382017-09-14 15:30:08 -0700736TEST(MATH_TEST, remainderl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100737 ASSERT_DOUBLE_EQ(2.0L, remainderl(12.0L, 10.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800738}
739
Elliott Hughes50cda382017-09-14 15:30:08 -0700740TEST(MATH_TEST, drem) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000741 ASSERT_DOUBLE_EQ(2.0, drem(12.0, 10.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800742}
743
Elliott Hughes50cda382017-09-14 15:30:08 -0700744TEST(MATH_TEST, dremf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800745 ASSERT_FLOAT_EQ(2.0f, dremf(12.0f, 10.0f));
746}
747
Elliott Hughes50cda382017-09-14 15:30:08 -0700748TEST(MATH_TEST, fmax) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000749 ASSERT_DOUBLE_EQ(12.0, fmax(12.0, 10.0));
750 ASSERT_DOUBLE_EQ(12.0, fmax(12.0, nan("")));
751 ASSERT_DOUBLE_EQ(12.0, fmax(nan(""), 12.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800752}
753
Elliott Hughes50cda382017-09-14 15:30:08 -0700754TEST(MATH_TEST, fmaxf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800755 ASSERT_FLOAT_EQ(12.0f, fmaxf(12.0f, 10.0f));
756 ASSERT_FLOAT_EQ(12.0f, fmaxf(12.0f, nanf("")));
757 ASSERT_FLOAT_EQ(12.0f, fmaxf(nanf(""), 12.0f));
758}
759
Elliott Hughes50cda382017-09-14 15:30:08 -0700760TEST(MATH_TEST, fmaxl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100761 ASSERT_DOUBLE_EQ(12.0L, fmaxl(12.0L, 10.0L));
762 ASSERT_DOUBLE_EQ(12.0L, fmaxl(12.0L, nanl("")));
763 ASSERT_DOUBLE_EQ(12.0L, fmaxl(nanl(""), 12.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800764}
765
Elliott Hughes50cda382017-09-14 15:30:08 -0700766TEST(MATH_TEST, fmin) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000767 ASSERT_DOUBLE_EQ(10.0, fmin(12.0, 10.0));
768 ASSERT_DOUBLE_EQ(12.0, fmin(12.0, nan("")));
769 ASSERT_DOUBLE_EQ(12.0, fmin(nan(""), 12.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800770}
771
Elliott Hughes50cda382017-09-14 15:30:08 -0700772TEST(MATH_TEST, fminf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800773 ASSERT_FLOAT_EQ(10.0f, fminf(12.0f, 10.0f));
774 ASSERT_FLOAT_EQ(12.0f, fminf(12.0f, nanf("")));
775 ASSERT_FLOAT_EQ(12.0f, fminf(nanf(""), 12.0f));
776}
777
Elliott Hughes50cda382017-09-14 15:30:08 -0700778TEST(MATH_TEST, fminl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100779 ASSERT_DOUBLE_EQ(10.0L, fminl(12.0L, 10.0L));
780 ASSERT_DOUBLE_EQ(12.0L, fminl(12.0L, nanl("")));
781 ASSERT_DOUBLE_EQ(12.0L, fminl(nanl(""), 12.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800782}
783
Elliott Hughes50cda382017-09-14 15:30:08 -0700784TEST(MATH_TEST, fma) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000785 ASSERT_DOUBLE_EQ(10.0, fma(2.0, 3.0, 4.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800786}
787
Elliott Hughes50cda382017-09-14 15:30:08 -0700788TEST(MATH_TEST, fmaf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800789 ASSERT_FLOAT_EQ(10.0f, fmaf(2.0f, 3.0f, 4.0f));
790}
791
Elliott Hughes50cda382017-09-14 15:30:08 -0700792TEST(MATH_TEST, fmal) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100793 ASSERT_DOUBLE_EQ(10.0L, fmal(2.0L, 3.0L, 4.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800794}
795
Elliott Hughes50cda382017-09-14 15:30:08 -0700796TEST(MATH_TEST, hypot) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000797 ASSERT_DOUBLE_EQ(5.0, hypot(3.0, 4.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800798}
799
Elliott Hughes50cda382017-09-14 15:30:08 -0700800TEST(MATH_TEST, hypotf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800801 ASSERT_FLOAT_EQ(5.0f, hypotf(3.0f, 4.0f));
802}
803
Elliott Hughes50cda382017-09-14 15:30:08 -0700804TEST(MATH_TEST, hypotl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100805 ASSERT_DOUBLE_EQ(5.0L, hypotl(3.0L, 4.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800806}
807
Elliott Hughes50cda382017-09-14 15:30:08 -0700808TEST(MATH_TEST, erf) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000809 ASSERT_DOUBLE_EQ(0.84270079294971489, erf(1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800810}
811
Elliott Hughes50cda382017-09-14 15:30:08 -0700812TEST(MATH_TEST, erff) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800813 ASSERT_FLOAT_EQ(0.84270078f, erff(1.0f));
814}
815
Elliott Hughes50cda382017-09-14 15:30:08 -0700816TEST(MATH_TEST, erfl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100817 ASSERT_DOUBLE_EQ(0.84270079294971489L, erfl(1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800818}
819
Elliott Hughes50cda382017-09-14 15:30:08 -0700820TEST(MATH_TEST, erfc) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000821 ASSERT_DOUBLE_EQ(0.15729920705028513, erfc(1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800822}
823
Elliott Hughes50cda382017-09-14 15:30:08 -0700824TEST(MATH_TEST, erfcf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800825 ASSERT_FLOAT_EQ(0.15729921f, erfcf(1.0f));
826}
827
Elliott Hughes50cda382017-09-14 15:30:08 -0700828TEST(MATH_TEST, erfcl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100829 ASSERT_DOUBLE_EQ(0.15729920705028513l, erfcl(1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800830}
831
Elliott Hughes50cda382017-09-14 15:30:08 -0700832TEST(MATH_TEST, lrint) {
Tom Cherry98f016f2017-04-05 16:20:29 -0700833 auto guard = android::base::make_scope_guard([]() { fesetenv(FE_DFL_ENV); });
Dmitriy Ivanov7b956ed2014-09-04 12:47:07 -0700834
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800835 fesetround(FE_UPWARD); // lrint/lrintf/lrintl obey the rounding mode.
836 ASSERT_EQ(1235, lrint(1234.01));
837 ASSERT_EQ(1235, lrintf(1234.01f));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100838 ASSERT_EQ(1235, lrintl(1234.01L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800839 fesetround(FE_TOWARDZERO); // lrint/lrintf/lrintl obey the rounding mode.
840 ASSERT_EQ(1234, lrint(1234.01));
841 ASSERT_EQ(1234, lrintf(1234.01f));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100842 ASSERT_EQ(1234, lrintl(1234.01L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800843
844 fesetround(FE_UPWARD); // llrint/llrintf/llrintl obey the rounding mode.
845 ASSERT_EQ(1235L, llrint(1234.01));
846 ASSERT_EQ(1235L, llrintf(1234.01f));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100847 ASSERT_EQ(1235L, llrintl(1234.01L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800848 fesetround(FE_TOWARDZERO); // llrint/llrintf/llrintl obey the rounding mode.
849 ASSERT_EQ(1234L, llrint(1234.01));
850 ASSERT_EQ(1234L, llrintf(1234.01f));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100851 ASSERT_EQ(1234L, llrintl(1234.01L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800852}
853
Elliott Hughes50cda382017-09-14 15:30:08 -0700854TEST(MATH_TEST, rint) {
Tom Cherry98f016f2017-04-05 16:20:29 -0700855 auto guard = android::base::make_scope_guard([]() { fesetenv(FE_DFL_ENV); });
Dmitriy Ivanov7b956ed2014-09-04 12:47:07 -0700856
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800857 fesetround(FE_UPWARD); // rint/rintf/rintl obey the rounding mode.
858 feclearexcept(FE_ALL_EXCEPT); // rint/rintf/rintl do set the FE_INEXACT flag.
859 ASSERT_EQ(1234.0, rint(1234.0));
860 ASSERT_TRUE((fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) == 0);
861 ASSERT_EQ(1235.0, rint(1234.01));
862 ASSERT_TRUE((fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) != 0);
863
864 feclearexcept(FE_ALL_EXCEPT); // rint/rintf/rintl do set the FE_INEXACT flag.
865 ASSERT_EQ(1234.0f, rintf(1234.0f));
866 ASSERT_TRUE((fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) == 0);
867 ASSERT_EQ(1235.0f, rintf(1234.01f));
868 ASSERT_TRUE((fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) != 0);
869
870 feclearexcept(FE_ALL_EXCEPT); // rint/rintf/rintl do set the FE_INEXACT flag.
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100871 ASSERT_EQ(1234.0, rintl(1234.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800872 ASSERT_TRUE((fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) == 0);
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100873 ASSERT_EQ(1235.0, rintl(1234.01L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800874 ASSERT_TRUE((fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) != 0);
875
876 fesetround(FE_TOWARDZERO); // rint/rintf obey the rounding mode.
877 ASSERT_EQ(1234.0, rint(1234.01));
878 ASSERT_EQ(1234.0f, rintf(1234.01f));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100879 ASSERT_EQ(1234.0, rintl(1234.01L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800880}
881
Elliott Hughes50cda382017-09-14 15:30:08 -0700882TEST(MATH_TEST, nearbyint) {
Tom Cherry98f016f2017-04-05 16:20:29 -0700883 auto guard = android::base::make_scope_guard([]() { fesetenv(FE_DFL_ENV); });
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800884 fesetround(FE_UPWARD); // nearbyint/nearbyintf/nearbyintl obey the rounding mode.
885 feclearexcept(FE_ALL_EXCEPT); // nearbyint/nearbyintf/nearbyintl don't set the FE_INEXACT flag.
886 ASSERT_EQ(1234.0, nearbyint(1234.0));
887 ASSERT_TRUE((fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) == 0);
888 ASSERT_EQ(1235.0, nearbyint(1234.01));
889 ASSERT_TRUE((fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) == 0);
890
891 feclearexcept(FE_ALL_EXCEPT);
892 ASSERT_EQ(1234.0f, nearbyintf(1234.0f));
893 ASSERT_TRUE((fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) == 0);
894 ASSERT_EQ(1235.0f, nearbyintf(1234.01f));
895 ASSERT_TRUE((fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) == 0);
896
897 feclearexcept(FE_ALL_EXCEPT); // nearbyint/nearbyintf/nearbyintl don't set the FE_INEXACT flag.
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100898 ASSERT_EQ(1234.0, nearbyintl(1234.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800899 ASSERT_TRUE((fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) == 0);
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100900 ASSERT_EQ(1235.0, nearbyintl(1234.01L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800901 ASSERT_TRUE((fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) == 0);
902
903 fesetround(FE_TOWARDZERO); // nearbyint/nearbyintf/nearbyintl obey the rounding mode.
904 ASSERT_EQ(1234.0, nearbyint(1234.01));
905 ASSERT_EQ(1234.0f, nearbyintf(1234.01f));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100906 ASSERT_EQ(1234.0, nearbyintl(1234.01L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800907}
908
Elliott Hughes50cda382017-09-14 15:30:08 -0700909TEST(MATH_TEST, lround) {
Tom Cherry98f016f2017-04-05 16:20:29 -0700910 auto guard = android::base::make_scope_guard([]() { fesetenv(FE_DFL_ENV); });
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800911 fesetround(FE_UPWARD); // lround ignores the rounding mode.
912 ASSERT_EQ(1234, lround(1234.01));
913 ASSERT_EQ(1234, lroundf(1234.01f));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100914 ASSERT_EQ(1234, lroundl(1234.01L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800915}
916
Elliott Hughes50cda382017-09-14 15:30:08 -0700917TEST(MATH_TEST, llround) {
Tom Cherry98f016f2017-04-05 16:20:29 -0700918 auto guard = android::base::make_scope_guard([]() { fesetenv(FE_DFL_ENV); });
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800919 fesetround(FE_UPWARD); // llround ignores the rounding mode.
920 ASSERT_EQ(1234L, llround(1234.01));
921 ASSERT_EQ(1234L, llroundf(1234.01f));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100922 ASSERT_EQ(1234L, llroundl(1234.01L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800923}
924
Elliott Hughes50cda382017-09-14 15:30:08 -0700925TEST(MATH_TEST, ilogb) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800926 ASSERT_EQ(FP_ILOGB0, ilogb(0.0));
927 ASSERT_EQ(FP_ILOGBNAN, ilogb(nan("")));
928 ASSERT_EQ(INT_MAX, ilogb(HUGE_VAL));
929 ASSERT_EQ(0, ilogb(1.0));
930 ASSERT_EQ(3, ilogb(10.0));
931}
932
Elliott Hughes50cda382017-09-14 15:30:08 -0700933TEST(MATH_TEST, ilogbf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800934 ASSERT_EQ(FP_ILOGB0, ilogbf(0.0f));
935 ASSERT_EQ(FP_ILOGBNAN, ilogbf(nanf("")));
936 ASSERT_EQ(INT_MAX, ilogbf(HUGE_VALF));
937 ASSERT_EQ(0, ilogbf(1.0f));
938 ASSERT_EQ(3, ilogbf(10.0f));
939}
940
Elliott Hughes50cda382017-09-14 15:30:08 -0700941TEST(MATH_TEST, ilogbl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100942 ASSERT_EQ(FP_ILOGB0, ilogbl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800943 ASSERT_EQ(FP_ILOGBNAN, ilogbl(nanl("")));
944 ASSERT_EQ(INT_MAX, ilogbl(HUGE_VALL));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100945 ASSERT_EQ(0L, ilogbl(1.0L));
946 ASSERT_EQ(3L, ilogbl(10.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800947}
948
Elliott Hughes50cda382017-09-14 15:30:08 -0700949TEST(MATH_TEST, logb) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800950 ASSERT_EQ(-HUGE_VAL, logb(0.0));
951 ASSERT_TRUE(isnan(logb(nan(""))));
952 ASSERT_TRUE(isinf(logb(HUGE_VAL)));
953 ASSERT_EQ(0.0, logb(1.0));
954 ASSERT_EQ(3.0, logb(10.0));
955}
956
Elliott Hughes50cda382017-09-14 15:30:08 -0700957TEST(MATH_TEST, logbf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800958 ASSERT_EQ(-HUGE_VALF, logbf(0.0f));
959 ASSERT_TRUE(isnanf(logbf(nanf(""))));
960 ASSERT_TRUE(__isinff(logbf(HUGE_VALF)));
961 ASSERT_EQ(0.0f, logbf(1.0f));
962 ASSERT_EQ(3.0f, logbf(10.0f));
963}
964
Elliott Hughes50cda382017-09-14 15:30:08 -0700965TEST(MATH_TEST, logbl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100966 ASSERT_EQ(-HUGE_VAL, logbl(0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800967 ASSERT_TRUE(isnan(logbl(nanl(""))));
968 ASSERT_TRUE(isinf(logbl(HUGE_VALL)));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100969 ASSERT_EQ(0.0L, logbl(1.0L));
970 ASSERT_EQ(3.0L, logbl(10.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800971}
972
Elliott Hughes50cda382017-09-14 15:30:08 -0700973TEST(MATH_TEST, log1p) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800974 ASSERT_EQ(-HUGE_VAL, log1p(-1.0));
975 ASSERT_TRUE(isnan(log1p(nan(""))));
976 ASSERT_TRUE(isinf(log1p(HUGE_VAL)));
Calin Juravle4d77c112014-03-14 17:56:46 +0000977 ASSERT_DOUBLE_EQ(1.0, log1p(M_E - 1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800978}
979
Elliott Hughes50cda382017-09-14 15:30:08 -0700980TEST(MATH_TEST, log1pf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800981 ASSERT_EQ(-HUGE_VALF, log1pf(-1.0f));
982 ASSERT_TRUE(isnanf(log1pf(nanf(""))));
983 ASSERT_TRUE(__isinff(log1pf(HUGE_VALF)));
984 ASSERT_FLOAT_EQ(1.0f, log1pf(static_cast<float>(M_E) - 1.0f));
985}
986
Elliott Hughes50cda382017-09-14 15:30:08 -0700987TEST(MATH_TEST, log1pl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100988 ASSERT_EQ(-HUGE_VALL, log1pl(-1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800989 ASSERT_TRUE(isnan(log1pl(nanl(""))));
990 ASSERT_TRUE(isinf(log1pl(HUGE_VALL)));
Calin Juravleb7afa9d2014-04-01 16:41:12 +0100991 ASSERT_DOUBLE_EQ(1.0L, log1pl(M_E - 1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800992}
993
Elliott Hughes50cda382017-09-14 15:30:08 -0700994TEST(MATH_TEST, fdim) {
Calin Juravle4d77c112014-03-14 17:56:46 +0000995 ASSERT_DOUBLE_EQ(0.0, fdim(1.0, 1.0));
996 ASSERT_DOUBLE_EQ(1.0, fdim(2.0, 1.0));
997 ASSERT_DOUBLE_EQ(0.0, fdim(1.0, 2.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -0800998}
999
Elliott Hughes50cda382017-09-14 15:30:08 -07001000TEST(MATH_TEST, fdimf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001001 ASSERT_FLOAT_EQ(0.0f, fdimf(1.0f, 1.0f));
1002 ASSERT_FLOAT_EQ(1.0f, fdimf(2.0f, 1.0f));
1003 ASSERT_FLOAT_EQ(0.0f, fdimf(1.0f, 2.0f));
1004}
1005
Elliott Hughes50cda382017-09-14 15:30:08 -07001006TEST(MATH_TEST, fdiml) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001007 ASSERT_DOUBLE_EQ(0.0L, fdiml(1.0L, 1.0L));
1008 ASSERT_DOUBLE_EQ(1.0L, fdiml(2.0L, 1.0L));
1009 ASSERT_DOUBLE_EQ(0.0L, fdiml(1.0L, 2.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001010}
1011
Elliott Hughes50cda382017-09-14 15:30:08 -07001012TEST(MATH_TEST, round) {
Tom Cherry98f016f2017-04-05 16:20:29 -07001013 auto guard = android::base::make_scope_guard([]() { fesetenv(FE_DFL_ENV); });
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001014 fesetround(FE_TOWARDZERO); // round ignores the rounding mode and always rounds away from zero.
Calin Juravle4d77c112014-03-14 17:56:46 +00001015 ASSERT_DOUBLE_EQ(1.0, round(0.5));
1016 ASSERT_DOUBLE_EQ(-1.0, round(-0.5));
1017 ASSERT_DOUBLE_EQ(0.0, round(0.0));
1018 ASSERT_DOUBLE_EQ(-0.0, round(-0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001019 ASSERT_TRUE(isnan(round(nan(""))));
Calin Juravle4d77c112014-03-14 17:56:46 +00001020 ASSERT_DOUBLE_EQ(HUGE_VAL, round(HUGE_VAL));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001021}
1022
Elliott Hughes50cda382017-09-14 15:30:08 -07001023TEST(MATH_TEST, roundf) {
Tom Cherry98f016f2017-04-05 16:20:29 -07001024 auto guard = android::base::make_scope_guard([]() { fesetenv(FE_DFL_ENV); });
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001025 fesetround(FE_TOWARDZERO); // roundf ignores the rounding mode and always rounds away from zero.
1026 ASSERT_FLOAT_EQ(1.0f, roundf(0.5f));
1027 ASSERT_FLOAT_EQ(-1.0f, roundf(-0.5f));
1028 ASSERT_FLOAT_EQ(0.0f, roundf(0.0f));
1029 ASSERT_FLOAT_EQ(-0.0f, roundf(-0.0f));
1030 ASSERT_TRUE(isnanf(roundf(nanf(""))));
1031 ASSERT_FLOAT_EQ(HUGE_VALF, roundf(HUGE_VALF));
1032}
1033
Elliott Hughes50cda382017-09-14 15:30:08 -07001034TEST(MATH_TEST, roundl) {
Tom Cherry98f016f2017-04-05 16:20:29 -07001035 auto guard = android::base::make_scope_guard([]() { fesetenv(FE_DFL_ENV); });
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001036 fesetround(FE_TOWARDZERO); // roundl ignores the rounding mode and always rounds away from zero.
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001037 ASSERT_DOUBLE_EQ(1.0L, roundl(0.5L));
1038 ASSERT_DOUBLE_EQ(-1.0L, roundl(-0.5L));
1039 ASSERT_DOUBLE_EQ(0.0L, roundl(0.0L));
1040 ASSERT_DOUBLE_EQ(-0.0L, roundl(-0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001041 ASSERT_TRUE(isnan(roundl(nanl(""))));
Calin Juravle4d77c112014-03-14 17:56:46 +00001042 ASSERT_DOUBLE_EQ(HUGE_VALL, roundl(HUGE_VALL));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001043}
1044
Elliott Hughes50cda382017-09-14 15:30:08 -07001045TEST(MATH_TEST, trunc) {
Tom Cherry98f016f2017-04-05 16:20:29 -07001046 auto guard = android::base::make_scope_guard([]() { fesetenv(FE_DFL_ENV); });
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001047 fesetround(FE_UPWARD); // trunc ignores the rounding mode and always rounds toward zero.
Calin Juravle4d77c112014-03-14 17:56:46 +00001048 ASSERT_DOUBLE_EQ(1.0, trunc(1.5));
1049 ASSERT_DOUBLE_EQ(-1.0, trunc(-1.5));
1050 ASSERT_DOUBLE_EQ(0.0, trunc(0.0));
1051 ASSERT_DOUBLE_EQ(-0.0, trunc(-0.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001052 ASSERT_TRUE(isnan(trunc(nan(""))));
Calin Juravle4d77c112014-03-14 17:56:46 +00001053 ASSERT_DOUBLE_EQ(HUGE_VAL, trunc(HUGE_VAL));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001054}
1055
Elliott Hughes50cda382017-09-14 15:30:08 -07001056TEST(MATH_TEST, truncf) {
Tom Cherry98f016f2017-04-05 16:20:29 -07001057 auto guard = android::base::make_scope_guard([]() { fesetenv(FE_DFL_ENV); });
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001058 fesetround(FE_UPWARD); // truncf ignores the rounding mode and always rounds toward zero.
1059 ASSERT_FLOAT_EQ(1.0f, truncf(1.5f));
1060 ASSERT_FLOAT_EQ(-1.0f, truncf(-1.5f));
1061 ASSERT_FLOAT_EQ(0.0f, truncf(0.0f));
1062 ASSERT_FLOAT_EQ(-0.0f, truncf(-0.0f));
1063 ASSERT_TRUE(isnan(truncf(nanf(""))));
1064 ASSERT_FLOAT_EQ(HUGE_VALF, truncf(HUGE_VALF));
1065}
1066
Elliott Hughes50cda382017-09-14 15:30:08 -07001067TEST(MATH_TEST, truncl) {
Tom Cherry98f016f2017-04-05 16:20:29 -07001068 auto guard = android::base::make_scope_guard([]() { fesetenv(FE_DFL_ENV); });
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001069 fesetround(FE_UPWARD); // truncl ignores the rounding mode and always rounds toward zero.
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001070 ASSERT_DOUBLE_EQ(1.0L, truncl(1.5L));
1071 ASSERT_DOUBLE_EQ(-1.0L, truncl(-1.5L));
1072 ASSERT_DOUBLE_EQ(0.0L, truncl(0.0L));
1073 ASSERT_DOUBLE_EQ(-0.0L, truncl(-0.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001074 ASSERT_TRUE(isnan(truncl(nan(""))));
Calin Juravle4d77c112014-03-14 17:56:46 +00001075 ASSERT_DOUBLE_EQ(HUGE_VALL, truncl(HUGE_VALL));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001076}
1077
Elliott Hughes50cda382017-09-14 15:30:08 -07001078TEST(MATH_TEST, nextafter) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001079 ASSERT_DOUBLE_EQ(0.0, nextafter(0.0, 0.0));
1080 ASSERT_DOUBLE_EQ(4.9406564584124654e-324, nextafter(0.0, 1.0));
Jingwei Zhang90be6c52014-09-19 00:50:00 +08001081 ASSERT_DOUBLE_EQ(-4.9406564584124654e-324, nextafter(0.0, -1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001082}
1083
Elliott Hughes50cda382017-09-14 15:30:08 -07001084TEST(MATH_TEST, nextafterf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001085 ASSERT_FLOAT_EQ(0.0f, nextafterf(0.0f, 0.0f));
1086 ASSERT_FLOAT_EQ(1.4012985e-45f, nextafterf(0.0f, 1.0f));
Jingwei Zhang90be6c52014-09-19 00:50:00 +08001087 ASSERT_FLOAT_EQ(-1.4012985e-45f, nextafterf(0.0f, -1.0f));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001088}
1089
Elliott Hughes50cda382017-09-14 15:30:08 -07001090TEST(MATH_TEST, nextafterl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001091 ASSERT_DOUBLE_EQ(0.0L, nextafterl(0.0L, 0.0L));
Calin Juravle4d77c112014-03-14 17:56:46 +00001092 // Use a runtime value to accomodate the case when
1093 // sizeof(double) == sizeof(long double)
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001094 long double smallest_positive = ldexpl(1.0L, LDBL_MIN_EXP - LDBL_MANT_DIG);
1095 ASSERT_DOUBLE_EQ(smallest_positive, nextafterl(0.0L, 1.0L));
Jingwei Zhang90be6c52014-09-19 00:50:00 +08001096 ASSERT_DOUBLE_EQ(-smallest_positive, nextafterl(0.0L, -1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001097}
1098
Elliott Hughes50cda382017-09-14 15:30:08 -07001099TEST(MATH_TEST, nexttoward) {
Calin Juravle1abc9ff2014-04-17 18:17:32 +01001100 ASSERT_DOUBLE_EQ(0.0, nexttoward(0.0, 0.0L));
1101 ASSERT_DOUBLE_EQ(4.9406564584124654e-324, nexttoward(0.0, 1.0L));
Jingwei Zhang90be6c52014-09-19 00:50:00 +08001102 ASSERT_DOUBLE_EQ(-4.9406564584124654e-324, nexttoward(0.0, -1.0L));
Calin Juravle1abc9ff2014-04-17 18:17:32 +01001103}
1104
Elliott Hughes50cda382017-09-14 15:30:08 -07001105TEST(MATH_TEST, nexttowardf) {
Calin Juravle1abc9ff2014-04-17 18:17:32 +01001106 ASSERT_FLOAT_EQ(0.0f, nexttowardf(0.0f, 0.0L));
1107 ASSERT_FLOAT_EQ(1.4012985e-45f, nexttowardf(0.0f, 1.0L));
Jingwei Zhang90be6c52014-09-19 00:50:00 +08001108 ASSERT_FLOAT_EQ(-1.4012985e-45f, nexttowardf(0.0f, -1.0L));
Calin Juravle1abc9ff2014-04-17 18:17:32 +01001109}
1110
Elliott Hughes50cda382017-09-14 15:30:08 -07001111TEST(MATH_TEST, nexttowardl) {
Calin Juravle1abc9ff2014-04-17 18:17:32 +01001112 ASSERT_DOUBLE_EQ(0.0L, nexttowardl(0.0L, 0.0L));
1113 // Use a runtime value to accomodate the case when
1114 // sizeof(double) == sizeof(long double)
1115 long double smallest_positive = ldexpl(1.0L, LDBL_MIN_EXP - LDBL_MANT_DIG);
1116 ASSERT_DOUBLE_EQ(smallest_positive, nexttowardl(0.0L, 1.0L));
Jingwei Zhang90be6c52014-09-19 00:50:00 +08001117 ASSERT_DOUBLE_EQ(-smallest_positive, nexttowardl(0.0L, -1.0L));
Calin Juravle1abc9ff2014-04-17 18:17:32 +01001118}
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001119
Elliott Hughes50cda382017-09-14 15:30:08 -07001120TEST(MATH_TEST, copysign) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001121 ASSERT_DOUBLE_EQ(0.0, copysign(0.0, 1.0));
1122 ASSERT_DOUBLE_EQ(-0.0, copysign(0.0, -1.0));
1123 ASSERT_DOUBLE_EQ(2.0, copysign(2.0, 1.0));
1124 ASSERT_DOUBLE_EQ(-2.0, copysign(2.0, -1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001125}
1126
Elliott Hughes50cda382017-09-14 15:30:08 -07001127TEST(MATH_TEST, copysignf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001128 ASSERT_FLOAT_EQ(0.0f, copysignf(0.0f, 1.0f));
1129 ASSERT_FLOAT_EQ(-0.0f, copysignf(0.0f, -1.0f));
1130 ASSERT_FLOAT_EQ(2.0f, copysignf(2.0f, 1.0f));
1131 ASSERT_FLOAT_EQ(-2.0f, copysignf(2.0f, -1.0f));
1132}
1133
Elliott Hughes50cda382017-09-14 15:30:08 -07001134TEST(MATH_TEST, copysignl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001135 ASSERT_DOUBLE_EQ(0.0L, copysignl(0.0L, 1.0L));
1136 ASSERT_DOUBLE_EQ(-0.0L, copysignl(0.0L, -1.0L));
1137 ASSERT_DOUBLE_EQ(2.0L, copysignl(2.0L, 1.0L));
1138 ASSERT_DOUBLE_EQ(-2.0L, copysignl(2.0L, -1.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001139}
1140
Elliott Hughes50cda382017-09-14 15:30:08 -07001141TEST(MATH_TEST, significand) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001142 ASSERT_DOUBLE_EQ(0.0, significand(0.0));
1143 ASSERT_DOUBLE_EQ(1.2, significand(1.2));
Jingwei Zhang90be6c52014-09-19 00:50:00 +08001144 ASSERT_DOUBLE_EQ(1.53125, significand(12.25));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001145}
1146
Elliott Hughes50cda382017-09-14 15:30:08 -07001147TEST(MATH_TEST, significandf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001148 ASSERT_FLOAT_EQ(0.0f, significandf(0.0f));
1149 ASSERT_FLOAT_EQ(1.2f, significandf(1.2f));
Jingwei Zhang90be6c52014-09-19 00:50:00 +08001150 ASSERT_FLOAT_EQ(1.53125f, significandf(12.25f));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001151}
1152
Elliott Hughes50cda382017-09-14 15:30:08 -07001153TEST(MATH_TEST, significandl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001154 ASSERT_DOUBLE_EQ(0.0L, significandl(0.0L));
1155 ASSERT_DOUBLE_EQ(1.2L, significandl(1.2L));
Jingwei Zhang90be6c52014-09-19 00:50:00 +08001156 ASSERT_DOUBLE_EQ(1.53125L, significandl(12.25L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001157}
1158
Elliott Hughes50cda382017-09-14 15:30:08 -07001159TEST(MATH_TEST, scalb) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001160 ASSERT_DOUBLE_EQ(12.0, scalb(3.0, 2.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001161}
1162
Elliott Hughes50cda382017-09-14 15:30:08 -07001163TEST(MATH_TEST, scalbf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001164 ASSERT_FLOAT_EQ(12.0f, scalbf(3.0f, 2.0f));
1165}
1166
Elliott Hughes50cda382017-09-14 15:30:08 -07001167TEST(MATH_TEST, scalbln) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001168 ASSERT_DOUBLE_EQ(12.0, scalbln(3.0, 2L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001169}
1170
Elliott Hughes50cda382017-09-14 15:30:08 -07001171TEST(MATH_TEST, scalblnf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001172 ASSERT_FLOAT_EQ(12.0f, scalblnf(3.0f, 2L));
1173}
1174
Elliott Hughes50cda382017-09-14 15:30:08 -07001175TEST(MATH_TEST, scalblnl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001176 ASSERT_DOUBLE_EQ(12.0L, scalblnl(3.0L, 2L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001177}
1178
Elliott Hughes50cda382017-09-14 15:30:08 -07001179TEST(MATH_TEST, scalbn) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001180 ASSERT_DOUBLE_EQ(12.0, scalbn(3.0, 2));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001181}
1182
Elliott Hughes50cda382017-09-14 15:30:08 -07001183TEST(MATH_TEST, scalbnf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001184 ASSERT_FLOAT_EQ(12.0f, scalbnf(3.0f, 2));
1185}
1186
Elliott Hughes50cda382017-09-14 15:30:08 -07001187TEST(MATH_TEST, scalbnl) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001188 ASSERT_DOUBLE_EQ(12.0L, scalbnl(3.0L, 2));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001189}
1190
Elliott Hughes50cda382017-09-14 15:30:08 -07001191TEST(MATH_TEST, gamma) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001192 ASSERT_DOUBLE_EQ(log(24.0), gamma(5.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001193}
1194
Elliott Hughes50cda382017-09-14 15:30:08 -07001195TEST(MATH_TEST, gammaf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001196 ASSERT_FLOAT_EQ(logf(24.0f), gammaf(5.0f));
1197}
1198
Elliott Hughes50cda382017-09-14 15:30:08 -07001199TEST(MATH_TEST, gamma_r) {
Christopher Ferrisf04935c2013-12-20 18:43:21 -08001200#if defined(__BIONIC__)
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001201 int sign;
Calin Juravle4d77c112014-03-14 17:56:46 +00001202 ASSERT_DOUBLE_EQ(log(24.0), gamma_r(5.0, &sign));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001203 ASSERT_EQ(1, sign);
Christopher Ferrisf04935c2013-12-20 18:43:21 -08001204#else // __BIONIC__
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001205 GTEST_LOG_(INFO) << "glibc doesn't have gamma_r.\n";
Christopher Ferrisf04935c2013-12-20 18:43:21 -08001206#endif // __BIONIC__
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001207}
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001208
Elliott Hughes50cda382017-09-14 15:30:08 -07001209TEST(MATH_TEST, gammaf_r) {
Christopher Ferrisf04935c2013-12-20 18:43:21 -08001210#if defined(__BIONIC__)
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001211 int sign;
1212 ASSERT_FLOAT_EQ(logf(24.0f), gammaf_r(5.0f, &sign));
1213 ASSERT_EQ(1, sign);
Christopher Ferrisf04935c2013-12-20 18:43:21 -08001214#else // __BIONIC__
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001215 GTEST_LOG_(INFO) << "glibc doesn't have gammaf_r.\n";
Christopher Ferrisf04935c2013-12-20 18:43:21 -08001216#endif // __BIONIC__
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001217}
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001218
Elliott Hughes50cda382017-09-14 15:30:08 -07001219TEST(MATH_TEST, lgamma) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001220 ASSERT_DOUBLE_EQ(log(24.0), lgamma(5.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001221}
1222
Elliott Hughes50cda382017-09-14 15:30:08 -07001223TEST(MATH_TEST, lgammaf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001224 ASSERT_FLOAT_EQ(logf(24.0f), lgammaf(5.0f));
1225}
1226
Elliott Hughes50cda382017-09-14 15:30:08 -07001227TEST(MATH_TEST, lgammal) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001228 ASSERT_DOUBLE_EQ(logl(24.0L), lgammal(5.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001229}
1230
Elliott Hughes50cda382017-09-14 15:30:08 -07001231TEST(MATH_TEST, lgamma_r) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001232 int sign;
Calin Juravle4d77c112014-03-14 17:56:46 +00001233 ASSERT_DOUBLE_EQ(log(24.0), lgamma_r(5.0, &sign));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001234 ASSERT_EQ(1, sign);
1235}
1236
Elliott Hughes50cda382017-09-14 15:30:08 -07001237TEST(MATH_TEST, lgamma_r_17471883) {
Elliott Hughes75531852014-09-18 11:23:58 -07001238 int sign;
1239
1240 sign = 0;
1241 ASSERT_DOUBLE_EQ(HUGE_VAL, lgamma_r(0.0, &sign));
1242 ASSERT_EQ(1, sign);
1243 sign = 0;
1244 ASSERT_DOUBLE_EQ(HUGE_VAL, lgamma_r(-0.0, &sign));
1245 ASSERT_EQ(-1, sign);
1246}
1247
Elliott Hughes50cda382017-09-14 15:30:08 -07001248TEST(MATH_TEST, lgammaf_r) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001249 int sign;
1250 ASSERT_FLOAT_EQ(logf(24.0f), lgammaf_r(5.0f, &sign));
1251 ASSERT_EQ(1, sign);
1252}
1253
Elliott Hughes50cda382017-09-14 15:30:08 -07001254TEST(MATH_TEST, lgammaf_r_17471883) {
Elliott Hughes75531852014-09-18 11:23:58 -07001255 int sign;
1256
1257 sign = 0;
1258 ASSERT_FLOAT_EQ(HUGE_VALF, lgammaf_r(0.0f, &sign));
1259 ASSERT_EQ(1, sign);
1260 sign = 0;
1261 ASSERT_FLOAT_EQ(HUGE_VALF, lgammaf_r(-0.0f, &sign));
1262 ASSERT_EQ(-1, sign);
1263}
1264
Elliott Hughes50cda382017-09-14 15:30:08 -07001265TEST(MATH_TEST, lgammal_r) {
Elliott Hughes75531852014-09-18 11:23:58 -07001266 int sign;
1267 ASSERT_DOUBLE_EQ(log(24.0L), lgamma_r(5.0L, &sign));
1268 ASSERT_EQ(1, sign);
1269}
1270
Elliott Hughes50cda382017-09-14 15:30:08 -07001271TEST(MATH_TEST, lgammal_r_17471883) {
Elliott Hughes75531852014-09-18 11:23:58 -07001272 int sign;
1273
1274 sign = 0;
1275 ASSERT_DOUBLE_EQ(HUGE_VAL, lgammal_r(0.0L, &sign));
1276 ASSERT_EQ(1, sign);
1277 sign = 0;
1278 ASSERT_DOUBLE_EQ(HUGE_VAL, lgammal_r(-0.0L, &sign));
1279 ASSERT_EQ(-1, sign);
1280}
1281
Elliott Hughes50cda382017-09-14 15:30:08 -07001282TEST(MATH_TEST, tgamma) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001283 ASSERT_DOUBLE_EQ(24.0, tgamma(5.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001284}
1285
Elliott Hughes50cda382017-09-14 15:30:08 -07001286TEST(MATH_TEST, tgammaf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001287 ASSERT_FLOAT_EQ(24.0f, tgammaf(5.0f));
1288}
1289
Elliott Hughes50cda382017-09-14 15:30:08 -07001290TEST(MATH_TEST, tgammal) {
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001291 ASSERT_DOUBLE_EQ(24.0L, tgammal(5.0L));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001292}
1293
Elliott Hughes50cda382017-09-14 15:30:08 -07001294TEST(MATH_TEST, j0) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001295 ASSERT_DOUBLE_EQ(1.0, j0(0.0));
1296 ASSERT_DOUBLE_EQ(0.76519768655796661, j0(1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001297}
1298
Elliott Hughes50cda382017-09-14 15:30:08 -07001299TEST(MATH_TEST, j0f) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001300 ASSERT_FLOAT_EQ(1.0f, j0f(0.0f));
1301 ASSERT_FLOAT_EQ(0.76519769f, j0f(1.0f));
1302}
1303
Elliott Hughes50cda382017-09-14 15:30:08 -07001304TEST(MATH_TEST, j1) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001305 ASSERT_DOUBLE_EQ(0.0, j1(0.0));
1306 ASSERT_DOUBLE_EQ(0.44005058574493355, j1(1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001307}
1308
Elliott Hughes50cda382017-09-14 15:30:08 -07001309TEST(MATH_TEST, j1f) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001310 ASSERT_FLOAT_EQ(0.0f, j1f(0.0f));
1311 ASSERT_FLOAT_EQ(0.44005057f, j1f(1.0f));
1312}
1313
Elliott Hughes50cda382017-09-14 15:30:08 -07001314TEST(MATH_TEST, jn) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001315 ASSERT_DOUBLE_EQ(0.0, jn(4, 0.0));
1316 ASSERT_DOUBLE_EQ(0.0024766389641099553, jn(4, 1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001317}
1318
Elliott Hughes50cda382017-09-14 15:30:08 -07001319TEST(MATH_TEST, jnf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001320 ASSERT_FLOAT_EQ(0.0f, jnf(4, 0.0f));
1321 ASSERT_FLOAT_EQ(0.0024766389f, jnf(4, 1.0f));
1322}
1323
Elliott Hughes50cda382017-09-14 15:30:08 -07001324TEST(MATH_TEST, y0) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001325 ASSERT_DOUBLE_EQ(-HUGE_VAL, y0(0.0));
1326 ASSERT_DOUBLE_EQ(0.08825696421567697, y0(1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001327}
1328
Elliott Hughes50cda382017-09-14 15:30:08 -07001329TEST(MATH_TEST, y0f) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001330 ASSERT_FLOAT_EQ(-HUGE_VALF, y0f(0.0f));
1331 ASSERT_FLOAT_EQ(0.088256963f, y0f(1.0f));
1332}
1333
Elliott Hughes50cda382017-09-14 15:30:08 -07001334TEST(MATH_TEST, y1) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001335 ASSERT_DOUBLE_EQ(-HUGE_VAL, y1(0.0));
1336 ASSERT_DOUBLE_EQ(-0.78121282130028868, y1(1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001337}
1338
Elliott Hughes50cda382017-09-14 15:30:08 -07001339TEST(MATH_TEST, y1f) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001340 ASSERT_FLOAT_EQ(-HUGE_VALF, y1f(0.0f));
1341 ASSERT_FLOAT_EQ(-0.78121281f, y1f(1.0f));
1342}
1343
Elliott Hughes50cda382017-09-14 15:30:08 -07001344TEST(MATH_TEST, yn) {
Calin Juravle4d77c112014-03-14 17:56:46 +00001345 ASSERT_DOUBLE_EQ(-HUGE_VAL, yn(4, 0.0));
1346 ASSERT_DOUBLE_EQ(-33.278423028972114, yn(4, 1.0));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001347}
1348
Elliott Hughes50cda382017-09-14 15:30:08 -07001349TEST(MATH_TEST, ynf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001350 ASSERT_FLOAT_EQ(-HUGE_VALF, ynf(4, 0.0f));
1351 ASSERT_FLOAT_EQ(-33.278423f, ynf(4, 1.0f));
1352}
1353
Elliott Hughes50cda382017-09-14 15:30:08 -07001354TEST(MATH_TEST, frexp) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001355 int exp;
1356 double dr = frexp(1024.0, &exp);
Calin Juravle4d77c112014-03-14 17:56:46 +00001357 ASSERT_DOUBLE_EQ(1024.0, scalbn(dr, exp));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001358}
1359
Elliott Hughes50cda382017-09-14 15:30:08 -07001360TEST(MATH_TEST, frexpf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001361 int exp;
1362 float fr = frexpf(1024.0f, &exp);
1363 ASSERT_FLOAT_EQ(1024.0f, scalbnf(fr, exp));
1364}
1365
Elliott Hughes50cda382017-09-14 15:30:08 -07001366TEST(MATH_TEST, frexpl) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001367 int exp;
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001368 long double ldr = frexpl(1024.0L, &exp);
1369 ASSERT_DOUBLE_EQ(1024.0L, scalbnl(ldr, exp));
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001370}
1371
Elliott Hughes50cda382017-09-14 15:30:08 -07001372TEST(MATH_TEST, modf) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001373 double di;
Calin Juravled8d6fee2014-04-01 16:45:53 +01001374 double df = modf(123.75, &di);
Calin Juravle4d77c112014-03-14 17:56:46 +00001375 ASSERT_DOUBLE_EQ(123.0, di);
Calin Juravled8d6fee2014-04-01 16:45:53 +01001376 ASSERT_DOUBLE_EQ(0.75, df);
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001377}
1378
Elliott Hughes50cda382017-09-14 15:30:08 -07001379TEST(MATH_TEST, modff) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001380 float fi;
Calin Juravled8d6fee2014-04-01 16:45:53 +01001381 float ff = modff(123.75f, &fi);
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001382 ASSERT_FLOAT_EQ(123.0f, fi);
Calin Juravled8d6fee2014-04-01 16:45:53 +01001383 ASSERT_FLOAT_EQ(0.75f, ff);
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001384}
1385
Elliott Hughes50cda382017-09-14 15:30:08 -07001386TEST(MATH_TEST, modfl) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001387 long double ldi;
Calin Juravled8d6fee2014-04-01 16:45:53 +01001388 long double ldf = modfl(123.75L, &ldi);
1389 ASSERT_DOUBLE_EQ(123.0L, ldi);
1390 ASSERT_DOUBLE_EQ(0.75L, ldf);
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001391}
1392
Elliott Hughes50cda382017-09-14 15:30:08 -07001393TEST(MATH_TEST, remquo) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001394 int q;
1395 double d = remquo(13.0, 4.0, &q);
1396 ASSERT_EQ(3, q);
Calin Juravle4d77c112014-03-14 17:56:46 +00001397 ASSERT_DOUBLE_EQ(1.0, d);
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001398}
1399
Elliott Hughes50cda382017-09-14 15:30:08 -07001400TEST(MATH_TEST, remquof) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001401 int q;
1402 float f = remquof(13.0f, 4.0f, &q);
1403 ASSERT_EQ(3, q);
1404 ASSERT_FLOAT_EQ(1.0, f);
1405}
1406
Elliott Hughes50cda382017-09-14 15:30:08 -07001407TEST(MATH_TEST, remquol) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001408 int q;
Calin Juravleb7afa9d2014-04-01 16:41:12 +01001409 long double ld = remquol(13.0L, 4.0L, &q);
1410 ASSERT_DOUBLE_EQ(3L, q);
1411 ASSERT_DOUBLE_EQ(1.0L, ld);
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001412}
1413
1414// https://code.google.com/p/android/issues/detail?id=6697
Elliott Hughes50cda382017-09-14 15:30:08 -07001415TEST(MATH_TEST, frexpf_public_bug_6697) {
Elliott Hughesa0ee0782013-01-30 19:06:37 -08001416 int exp;
1417 float fr = frexpf(14.1f, &exp);
1418 ASSERT_FLOAT_EQ(14.1f, scalbnf(fr, exp));
1419}
Elliott Hughes18b17e92014-06-06 21:43:33 -07001420
Elliott Hughes50cda382017-09-14 15:30:08 -07001421TEST(MATH_TEST, exp2_STRICT_ALIGN_OpenBSD_bug) {
Elliott Hughes18b17e92014-06-06 21:43:33 -07001422 // OpenBSD/x86's libm had a bug here, but it was already fixed in FreeBSD:
1423 // http://svnweb.FreeBSD.org/base/head/lib/msun/src/math_private.h?revision=240827&view=markup
1424 ASSERT_DOUBLE_EQ(5.0, exp2(log2(5)));
1425 ASSERT_FLOAT_EQ(5.0f, exp2f(log2f(5)));
1426 ASSERT_DOUBLE_EQ(5.0L, exp2l(log2l(5)));
1427}
1428
Elliott Hughes50cda382017-09-14 15:30:08 -07001429TEST(MATH_TEST, nextafterl_OpenBSD_bug) {
Elliott Hughes18b17e92014-06-06 21:43:33 -07001430 // OpenBSD/x86's libm had a bug here.
1431 ASSERT_TRUE(nextafter(1.0, 0.0) - 1.0 < 0.0);
1432 ASSERT_TRUE(nextafterf(1.0f, 0.0f) - 1.0f < 0.0f);
1433 ASSERT_TRUE(nextafterl(1.0L, 0.0L) - 1.0L < 0.0L);
1434}
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001435
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001436#include "math_data/acos_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001437TEST(MATH_TEST, acos_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001438 DoMathDataTest<1>(g_acos_intel_data, acos);
1439}
1440
1441#include "math_data/acosf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001442TEST(MATH_TEST, acosf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001443 DoMathDataTest<1>(g_acosf_intel_data, acosf);
1444}
1445
1446#include "math_data/acosh_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001447TEST(MATH_TEST, acosh_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001448 DoMathDataTest<2>(g_acosh_intel_data, acosh);
1449}
1450
1451#include "math_data/acoshf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001452TEST(MATH_TEST, acoshf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001453 DoMathDataTest<2>(g_acoshf_intel_data, acoshf);
1454}
1455
1456#include "math_data/asin_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001457TEST(MATH_TEST, asin_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001458 DoMathDataTest<1>(g_asin_intel_data, asin);
1459}
1460
1461#include "math_data/asinf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001462TEST(MATH_TEST, asinf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001463 DoMathDataTest<1>(g_asinf_intel_data, asinf);
1464}
1465
1466#include "math_data/asinh_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001467TEST(MATH_TEST, asinh_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001468 DoMathDataTest<2>(g_asinh_intel_data, asinh);
1469}
1470
1471#include "math_data/asinhf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001472TEST(MATH_TEST, asinhf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001473 DoMathDataTest<2>(g_asinhf_intel_data, asinhf);
1474}
1475
1476#include "math_data/atan2_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001477TEST(MATH_TEST, atan2_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001478 DoMathDataTest<2>(g_atan2_intel_data, atan2);
1479}
1480
1481#include "math_data/atan2f_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001482TEST(MATH_TEST, atan2f_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001483 DoMathDataTest<2>(g_atan2f_intel_data, atan2f);
1484}
1485
1486#include "math_data/atan_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001487TEST(MATH_TEST, atan_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001488 DoMathDataTest<1>(g_atan_intel_data, atan);
1489}
1490
1491#include "math_data/atanf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001492TEST(MATH_TEST, atanf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001493 DoMathDataTest<1>(g_atanf_intel_data, atanf);
1494}
1495
1496#include "math_data/atanh_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001497TEST(MATH_TEST, atanh_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001498 DoMathDataTest<2>(g_atanh_intel_data, atanh);
1499}
1500
1501#include "math_data/atanhf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001502TEST(MATH_TEST, atanhf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001503 DoMathDataTest<2>(g_atanhf_intel_data, atanhf);
1504}
1505
1506#include "math_data/cbrt_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001507TEST(MATH_TEST, cbrt_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001508 DoMathDataTest<1>(g_cbrt_intel_data, cbrt);
1509}
1510
1511#include "math_data/cbrtf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001512TEST(MATH_TEST, cbrtf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001513 DoMathDataTest<1>(g_cbrtf_intel_data, cbrtf);
1514}
1515
1516#include "math_data/ceil_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001517TEST(MATH_TEST, ceil_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001518 DoMathDataTest<1>(g_ceil_intel_data, ceil);
1519}
1520
1521#include "math_data/ceilf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001522TEST(MATH_TEST, ceilf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001523 DoMathDataTest<1>(g_ceilf_intel_data, ceilf);
1524}
1525
1526#include "math_data/copysign_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001527TEST(MATH_TEST, copysign_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001528 DoMathDataTest<1>(g_copysign_intel_data, copysign);
1529}
1530
1531#include "math_data/copysignf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001532TEST(MATH_TEST, copysignf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001533 DoMathDataTest<1>(g_copysignf_intel_data, copysignf);
1534}
1535
1536#include "math_data/cos_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001537TEST(MATH_TEST, cos_intel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001538 DoMathDataTest<1>(g_cos_intel_data, cos);
1539}
1540
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001541#include "math_data/cosf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001542TEST(MATH_TEST, cosf_intel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001543 DoMathDataTest<1>(g_cosf_intel_data, cosf);
1544}
1545
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001546#include "math_data/cosh_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001547TEST(MATH_TEST, cosh_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001548 DoMathDataTest<2>(g_cosh_intel_data, cosh);
1549}
1550
1551#include "math_data/coshf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001552TEST(MATH_TEST, coshf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001553 DoMathDataTest<2>(g_coshf_intel_data, coshf);
1554}
1555
1556#include "math_data/exp_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001557TEST(MATH_TEST, exp_intel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001558 DoMathDataTest<1>(g_exp_intel_data, exp);
1559}
1560
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001561#include "math_data/expf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001562TEST(MATH_TEST, expf_intel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001563 DoMathDataTest<1>(g_expf_intel_data, expf);
1564}
1565
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001566#include "math_data/exp2_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001567TEST(MATH_TEST, exp2_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001568 DoMathDataTest<1>(g_exp2_intel_data, exp2);
1569}
1570
1571#include "math_data/exp2f_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001572TEST(MATH_TEST, exp2f_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001573 DoMathDataTest<1>(g_exp2f_intel_data, exp2f);
1574}
1575
1576#include "math_data/expm1_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001577TEST(MATH_TEST, expm1_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001578 DoMathDataTest<1>(g_expm1_intel_data, expm1);
1579}
1580
1581#include "math_data/expm1f_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001582TEST(MATH_TEST, expm1f_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001583 DoMathDataTest<1>(g_expm1f_intel_data, expm1f);
1584}
1585
1586#include "math_data/fabs_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001587TEST(MATH_TEST, fabs_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001588 DoMathDataTest<1>(g_fabs_intel_data, fabs);
1589}
1590
1591#include "math_data/fabsf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001592TEST(MATH_TEST, fabsf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001593 DoMathDataTest<1>(g_fabsf_intel_data, fabsf);
1594}
1595
1596#include "math_data/fdim_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001597TEST(MATH_TEST, fdim_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001598 DoMathDataTest<1>(g_fdim_intel_data, fdim);
1599}
1600
1601#include "math_data/fdimf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001602TEST(MATH_TEST, fdimf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001603 DoMathDataTest<1>(g_fdimf_intel_data, fdimf);
1604}
1605
1606#include "math_data/floor_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001607TEST(MATH_TEST, floor_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001608 DoMathDataTest<1>(g_floor_intel_data, floor);
1609}
1610
1611#include "math_data/floorf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001612TEST(MATH_TEST, floorf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001613 DoMathDataTest<1>(g_floorf_intel_data, floorf);
1614}
1615
1616#include "math_data/fma_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001617TEST(MATH_TEST, fma_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001618 DoMathDataTest<1>(g_fma_intel_data, fma);
1619}
1620
1621#include "math_data/fmaf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001622TEST(MATH_TEST, fmaf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001623 DoMathDataTest<1>(g_fmaf_intel_data, fmaf);
1624}
1625
1626#include "math_data/fmax_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001627TEST(MATH_TEST, fmax_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001628 DoMathDataTest<1>(g_fmax_intel_data, fmax);
1629}
1630
1631#include "math_data/fmaxf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001632TEST(MATH_TEST, fmaxf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001633 DoMathDataTest<1>(g_fmaxf_intel_data, fmaxf);
1634}
1635
1636#include "math_data/fmin_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001637TEST(MATH_TEST, fmin_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001638 DoMathDataTest<1>(g_fmin_intel_data, fmin);
1639}
1640
1641#include "math_data/fminf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001642TEST(MATH_TEST, fminf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001643 DoMathDataTest<1>(g_fminf_intel_data, fminf);
1644}
1645
1646#include "math_data/fmod_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001647TEST(MATH_TEST, fmod_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001648 DoMathDataTest<1>(g_fmod_intel_data, fmod);
1649}
1650
1651#include "math_data/fmodf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001652TEST(MATH_TEST, fmodf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001653 DoMathDataTest<1>(g_fmodf_intel_data, fmodf);
1654}
1655
1656#include "math_data/frexp_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001657TEST(MATH_TEST, frexp_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001658 DoMathDataTest<1>(g_frexp_intel_data, frexp);
1659}
1660
1661#include "math_data/frexpf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001662TEST(MATH_TEST, frexpf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001663 DoMathDataTest<1>(g_frexpf_intel_data, frexpf);
1664}
1665
1666#include "math_data/hypot_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001667TEST(MATH_TEST, hypot_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001668 DoMathDataTest<1>(g_hypot_intel_data, hypot);
1669}
1670
1671#include "math_data/hypotf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001672TEST(MATH_TEST, hypotf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001673 DoMathDataTest<1>(g_hypotf_intel_data, hypotf);
1674}
1675
1676#include "math_data/ilogb_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001677TEST(MATH_TEST, ilogb_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001678 DoMathDataTest<1>(g_ilogb_intel_data, ilogb);
1679}
1680
1681#include "math_data/ilogbf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001682TEST(MATH_TEST, ilogbf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001683 DoMathDataTest<1>(g_ilogbf_intel_data, ilogbf);
1684}
1685
1686#include "math_data/ldexp_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001687TEST(MATH_TEST, ldexp_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001688 DoMathDataTest<1>(g_ldexp_intel_data, ldexp);
1689}
1690
1691#include "math_data/ldexpf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001692TEST(MATH_TEST, ldexpf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001693 DoMathDataTest<1>(g_ldexpf_intel_data, ldexpf);
1694}
1695
jzha136f3ea0932015-06-12 09:15:02 -07001696#include "math_data/llrint_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001697TEST(MATH_TEST, llrint_intel) {
jzha136f3ea0932015-06-12 09:15:02 -07001698 DoMathDataTest<1>(g_llrint_intel_data, llrint);
1699}
1700
1701#include "math_data/llrintf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001702TEST(MATH_TEST, llrintf_intel) {
jzha136f3ea0932015-06-12 09:15:02 -07001703 DoMathDataTest<1>(g_llrintf_intel_data, llrintf);
1704}
1705
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001706#include "math_data/log_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001707TEST(MATH_TEST, log_intel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001708 DoMathDataTest<1>(g_log_intel_data, log);
1709}
1710
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001711#include "math_data/logf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001712TEST(MATH_TEST, logf_intel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001713 DoMathDataTest<1>(g_logf_intel_data, logf);
1714}
1715
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001716#include "math_data/log10_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001717TEST(MATH_TEST, log10_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001718 DoMathDataTest<1>(g_log10_intel_data, log10);
1719}
1720
1721#include "math_data/log10f_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001722TEST(MATH_TEST, log10f_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001723 DoMathDataTest<1>(g_log10f_intel_data, log10f);
1724}
1725
1726#include "math_data/log1p_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001727TEST(MATH_TEST, log1p_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001728 DoMathDataTest<1>(g_log1p_intel_data, log1p);
1729}
1730
1731#include "math_data/log1pf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001732TEST(MATH_TEST, log1pf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001733 DoMathDataTest<1>(g_log1pf_intel_data, log1pf);
1734}
1735
1736#include "math_data/log2_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001737TEST(MATH_TEST, log2_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001738 DoMathDataTest<1>(g_log2_intel_data, log2);
1739}
1740
1741#include "math_data/log2f_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001742TEST(MATH_TEST, log2f_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001743 DoMathDataTest<1>(g_log2f_intel_data, log2f);
1744}
1745
1746#include "math_data/logb_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001747TEST(MATH_TEST, logb_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001748 DoMathDataTest<1>(g_logb_intel_data, logb);
1749}
1750
1751#include "math_data/logbf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001752TEST(MATH_TEST, logbf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001753 DoMathDataTest<1>(g_logbf_intel_data, logbf);
1754}
1755
jzha136f3ea0932015-06-12 09:15:02 -07001756#include "math_data/lrint_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001757TEST(MATH_TEST, lrint_intel) {
jzha136f3ea0932015-06-12 09:15:02 -07001758 DoMathDataTest<1>(g_lrint_intel_data, lrint);
1759}
1760
1761#include "math_data/lrintf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001762TEST(MATH_TEST, lrintf_intel) {
jzha136f3ea0932015-06-12 09:15:02 -07001763 DoMathDataTest<1>(g_lrintf_intel_data, lrintf);
1764}
1765
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001766#include "math_data/modf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001767TEST(MATH_TEST, modf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001768 DoMathDataTest<1>(g_modf_intel_data, modf);
1769}
1770
1771#include "math_data/modff_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001772TEST(MATH_TEST, modff_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001773 DoMathDataTest<1>(g_modff_intel_data, modff);
1774}
1775
1776#include "math_data/nearbyint_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001777TEST(MATH_TEST, nearbyint_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001778 DoMathDataTest<1>(g_nearbyint_intel_data, nearbyint);
1779}
1780
1781#include "math_data/nearbyintf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001782TEST(MATH_TEST, nearbyintf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001783 DoMathDataTest<1>(g_nearbyintf_intel_data, nearbyintf);
1784}
1785
1786#include "math_data/nextafter_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001787TEST(MATH_TEST, nextafter_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001788 DoMathDataTest<1>(g_nextafter_intel_data, nextafter);
1789}
1790
1791#include "math_data/nextafterf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001792TEST(MATH_TEST, nextafterf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001793 DoMathDataTest<1>(g_nextafterf_intel_data, nextafterf);
1794}
1795
1796#include "math_data/pow_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001797TEST(MATH_TEST, pow_intel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001798 DoMathDataTest<1>(g_pow_intel_data, pow);
1799}
1800
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001801#include "math_data/powf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001802TEST(MATH_TEST, powf_intel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001803 DoMathDataTest<1>(g_powf_intel_data, powf);
1804}
1805
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001806#include "math_data/remainder_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001807TEST(MATH_TEST, remainder_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001808 DoMathDataTest<1>(g_remainder_intel_data, remainder);
1809}
1810
1811#include "math_data/remainderf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001812TEST(MATH_TEST, remainderf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001813 DoMathDataTest<1>(g_remainderf_intel_data, remainderf);
1814}
1815
1816#include "math_data/remquo_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001817TEST(MATH_TEST, remquo_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001818 DoMathDataTest<1>(g_remquo_intel_data, remquo);
1819}
1820
1821#include "math_data/remquof_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001822TEST(MATH_TEST, remquof_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001823 DoMathDataTest<1>(g_remquof_intel_data, remquof);
1824}
1825
1826#include "math_data/rint_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001827TEST(MATH_TEST, rint_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001828 DoMathDataTest<1>(g_rint_intel_data, rint);
1829}
1830
1831#include "math_data/rintf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001832TEST(MATH_TEST, rintf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001833 DoMathDataTest<1>(g_rintf_intel_data, rintf);
1834}
1835
1836#include "math_data/round_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001837TEST(MATH_TEST, round_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001838 DoMathDataTest<1>(g_round_intel_data, round);
1839}
1840
1841#include "math_data/roundf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001842TEST(MATH_TEST, roundf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001843 DoMathDataTest<1>(g_roundf_intel_data, roundf);
1844}
1845
1846#include "math_data/scalb_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001847TEST(MATH_TEST, scalb_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001848 DoMathDataTest<1>(g_scalb_intel_data, scalb);
1849}
1850
1851#include "math_data/scalbf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001852TEST(MATH_TEST, scalbf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001853 DoMathDataTest<1>(g_scalbf_intel_data, scalbf);
1854}
1855
1856#include "math_data/scalbn_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001857TEST(MATH_TEST, scalbn_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001858 DoMathDataTest<1>(g_scalbn_intel_data, scalbn);
1859}
1860
1861#include "math_data/scalbnf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001862TEST(MATH_TEST, scalbnf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001863 DoMathDataTest<1>(g_scalbnf_intel_data, scalbnf);
1864}
1865
1866#include "math_data/significand_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001867TEST(MATH_TEST, significand_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001868 DoMathDataTest<1>(g_significand_intel_data, significand);
1869}
1870
1871#include "math_data/significandf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001872TEST(MATH_TEST, significandf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001873 DoMathDataTest<1>(g_significandf_intel_data, significandf);
1874}
1875
1876#include "math_data/sin_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001877TEST(MATH_TEST, sin_intel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001878 DoMathDataTest<1>(g_sin_intel_data, sin);
1879}
1880
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001881#include "math_data/sinf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001882TEST(MATH_TEST, sinf_intel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001883 DoMathDataTest<1>(g_sinf_intel_data, sinf);
1884}
1885
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001886#include "math_data/sinh_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001887TEST(MATH_TEST, sinh_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001888 DoMathDataTest<2>(g_sinh_intel_data, sinh);
1889}
1890
1891#include "math_data/sinhf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001892TEST(MATH_TEST, sinhf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001893 DoMathDataTest<2>(g_sinhf_intel_data, sinhf);
1894}
1895
1896#include "math_data/sincos_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001897TEST(MATH_TEST, sincos_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001898 DoMathDataTest<1>(g_sincos_intel_data, sincos);
1899}
1900
1901#include "math_data/sincosf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001902TEST(MATH_TEST, sincosf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001903 DoMathDataTest<1>(g_sincosf_intel_data, sincosf);
1904}
1905
1906#include "math_data/sqrt_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001907TEST(MATH_TEST, sqrt_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001908 DoMathDataTest<1>(g_sqrt_intel_data, sqrt);
1909}
1910
1911#include "math_data/sqrtf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001912TEST(MATH_TEST, sqrtf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001913 DoMathDataTest<1>(g_sqrtf_intel_data, sqrtf);
1914}
1915
1916#include "math_data/tan_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001917TEST(MATH_TEST, tan_intel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001918 DoMathDataTest<1>(g_tan_intel_data, tan);
1919}
1920
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001921#include "math_data/tanf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001922TEST(MATH_TEST, tanf_intel) {
Elliott Hughes1b37ba22014-11-03 17:03:20 -08001923 DoMathDataTest<1>(g_tanf_intel_data, tanf);
1924}
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001925
1926#include "math_data/tanh_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001927TEST(MATH_TEST, tanh_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001928 DoMathDataTest<2>(g_tanh_intel_data, tanh);
1929}
1930
1931#include "math_data/tanhf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001932TEST(MATH_TEST, tanhf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001933 DoMathDataTest<2>(g_tanhf_intel_data, tanhf);
1934}
1935
1936#include "math_data/trunc_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001937TEST(MATH_TEST, trunc_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001938 DoMathDataTest<1>(g_trunc_intel_data, trunc);
1939}
1940
1941#include "math_data/truncf_intel_data.h"
Elliott Hughes50cda382017-09-14 15:30:08 -07001942TEST(MATH_TEST, truncf_intel) {
Jingwei Zhang56b2b292014-09-02 21:39:14 +08001943 DoMathDataTest<1>(g_truncf_intel_data, truncf);
1944}