summaryrefslogtreecommitdiff
path: root/tests/complex_test.cpp
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2018-07-23 18:05:28 -0700
committerandroid-build-merger <android-build-merger@google.com>2018-07-23 18:05:28 -0700
commitae90a20db306fdf7839c1e38c9e2af8d69d6ba9c (patch)
tree068475a0a85f6ed4919d4443fb39e7027e8485ed /tests/complex_test.cpp
parent859e2d51605ea8636b0aef806ed3781a9ccb598f (diff)
parent5f21e47fd0f2b621e0f7006d890b47d0c7c586d7 (diff)
Merge "libm: add tests that would have caught the recent regression." am: 94ab04c17a am: 70c102e536 am: 8a6afe38a7
am: 5f21e47fd0 Change-Id: Ib5a43f7050ebb2fb4937e8685153b5a6d4fb2806
Diffstat (limited to 'tests/complex_test.cpp')
-rw-r--r--tests/complex_test.cpp56
1 files changed, 54 insertions, 2 deletions
diff --git a/tests/complex_test.cpp b/tests/complex_test.cpp
index 2aaa19231..3bbddbb6c 100644
--- a/tests/complex_test.cpp
+++ b/tests/complex_test.cpp
@@ -317,12 +317,64 @@ TEST(COMPLEX_TEST, ctanl) {
TEST(COMPLEX_TEST, ctanh) {
ASSERT_EQ(0.0, ctanh(0));
+
+ double complex z;
+
+ // If z is NaN+0i, the result is NaN+0i.
+ z = ctanh(nan("") + 0i);
+ ASSERT_TRUE(isnan(creal(z)));
+ ASSERT_EQ(0.0, cimag(z));
+
+ // If z is NaN+yi, the result is NaN+NaNi.
+ z = ctanh(nan("") + 2.0i);
+ ASSERT_TRUE(isnan(creal(z)));
+ ASSERT_TRUE(isnan(cimag(z)));
+
+ // If z is NaN+NaNi, the result is NaN+NaNi.
+ z = ctanh(nan("") + nan("") * I);
+ ASSERT_TRUE(isnan(creal(z)));
+ ASSERT_TRUE(isnan(cimag(z)));
}
TEST(COMPLEX_TEST, ctanhf) {
- ASSERT_EQ(0.0, ctanhf(0));
+ ASSERT_EQ(0.0f, ctanhf(0.0f));
+
+ float complex z;
+
+ // If z is NaN+0i, the result is NaN+0i.
+ z = ctanhf(nanf("") + 0.0fi);
+ ASSERT_TRUE(isnan(crealf(z)));
+ ASSERT_EQ(0.0f, cimagf(z));
+
+ // If z is NaN+yi, the result is NaN+NaNi.
+ z = ctanhf(nanf("") + 2.0fi);
+ ASSERT_TRUE(isnan(crealf(z)));
+ ASSERT_TRUE(isnan(cimagf(z)));
+
+ // If z is NaN+NaNi, the result is NaN+NaNi.
+ z = ctanhf(nanf("") + nanf("") * I);
+ ASSERT_TRUE(isnan(crealf(z)));
+ ASSERT_TRUE(isnan(cimagf(z)));
}
TEST(COMPLEX_TEST, ctanhl) {
- ASSERT_EQ(0.0, ctanhl(0));
+ ASSERT_EQ(0.0L, ctanhl(0.0L));
+
+ long double complex z;
+
+ // If z is NaN+0i, the result is NaN+0i.
+ z = ctanhl(nanl("") + 0.0Li);
+ ASSERT_TRUE(isnan(creall(z)));
+ // TODO: this case is currently broken in the netbsd ctanhl.
+ // ASSERT_EQ(0.0L, cimagl(z));
+
+ // If z is NaN+yi, the result is NaN+NaNi.
+ z = ctanhl(nanl("") + 2.0Li);
+ ASSERT_TRUE(isnan(creall(z)));
+ ASSERT_TRUE(isnan(cimagl(z)));
+
+ // If z is NaN+NaNi, the result is NaN+NaNi.
+ z = ctanhl(nanl("") + nanl("") * I);
+ ASSERT_TRUE(isnan(creall(z)));
+ ASSERT_TRUE(isnan(cimagl(z)));
}