diff options
author | Elliott Hughes <enh@google.com> | 2018-07-23 16:41:36 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-07-23 16:41:36 -0700 |
commit | 70c102e536d8320740fb8cbea9d96d08bd45f9ed (patch) | |
tree | 068475a0a85f6ed4919d4443fb39e7027e8485ed /tests/complex_test.cpp | |
parent | 3c52f4adb0fefba7f88af388a04c0379d06b4148 (diff) | |
parent | 94ab04c17a0e9f412b7de079f2ef35f39c7f06fc (diff) |
Merge "libm: add tests that would have caught the recent regression."
am: 94ab04c17a
Change-Id: I8d3766ef3dc2ea3759b121ade24bcd1d1293e1a3
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))); } |