1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
14 // cosh(const complex<T>& x);
23 test(const std::complex<T>& c, std::complex<T> x)
32 test(std::complex<T>(0, 0), std::complex<T>(1, 0));
37 typedef std::complex<double> C;
38 const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
39 for (unsigned i = 0; i < N; ++i)
41 std::complex<double> r = cosh(testcases[i]);
42 if (testcases[i].real() == 0 && testcases[i].imag() == 0)
44 assert(r.real() == 1);
45 assert(r.imag() == 0);
46 assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
48 else if (testcases[i].real() == 0 && std::isinf(testcases[i].imag()))
50 assert(std::isnan(r.real()));
51 assert(r.imag() == 0);
53 else if (testcases[i].real() == 0 && std::isnan(testcases[i].imag()))
55 assert(std::isnan(r.real()));
56 assert(r.imag() == 0);
58 else if (std::isfinite(testcases[i].real()) && std::isinf(testcases[i].imag()))
60 assert(std::isnan(r.real()));
61 assert(std::isnan(r.imag()));
63 else if (std::isfinite(testcases[i].real()) && std::isnan(testcases[i].imag()))
65 assert(std::isnan(r.real()));
66 assert(std::isnan(r.imag()));
68 else if (std::isinf(testcases[i].real()) && testcases[i].imag() == 0)
70 assert(std::isinf(r.real()));
71 assert(!std::signbit(r.real()));
72 assert(r.imag() == 0);
73 assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
75 else if (std::isinf(testcases[i].real()) && std::isfinite(testcases[i].imag()))
77 assert(std::isinf(r.real()));
78 assert(std::signbit(r.real()) == std::signbit(cos(testcases[i].imag())));
79 assert(std::isinf(r.imag()));
80 assert(std::signbit(r.imag()) == std::signbit(testcases[i].real() * sin(testcases[i].imag())));
82 else if (std::isinf(testcases[i].real()) && std::isinf(testcases[i].imag()))
84 assert(std::isinf(r.real()));
85 assert(std::isnan(r.imag()));
87 else if (std::isinf(testcases[i].real()) && std::isnan(testcases[i].imag()))
89 assert(std::isinf(r.real()));
91 assert(std::isnan(r.imag()));
93 else if (std::isnan(testcases[i].real()) && testcases[i].imag() == 0)
95 assert(std::isnan(r.real()));
96 assert(r.imag() == 0);
98 else if (std::isnan(testcases[i].real()) && std::isfinite(testcases[i].imag()))
100 assert(std::isnan(r.real()));
101 assert(std::isnan(r.imag()));
103 else if (std::isnan(testcases[i].real()) && std::isnan(testcases[i].imag()))
105 assert(std::isnan(r.real()));
106 assert(std::isnan(r.imag()));