diff options
author | Elliott Hughes <enh@google.com> | 2018-07-23 18:05:28 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-07-23 18:05:28 -0700 |
commit | ae90a20db306fdf7839c1e38c9e2af8d69d6ba9c (patch) | |
tree | 068475a0a85f6ed4919d4443fb39e7027e8485ed /tests/complex_test.cpp | |
parent | 859e2d51605ea8636b0aef806ed3781a9ccb598f (diff) | |
parent | 5f21e47fd0f2b621e0f7006d890b47d0c7c586d7 (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.cpp | 56 |
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))); } |