1 //===----------------------------------------------------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
13 // tan(const complex<T>& x);
18 #include "test_macros.h"
23 test(const std::complex<T
>& c
, std::complex<T
> x
)
32 test(std::complex<T
>(0, 0), std::complex<T
>(0, 0));
33 test(std::complex<T
>(10000, -10000), std::complex<T
>(0, -1));
38 const unsigned N
= sizeof(testcases
) / sizeof(testcases
[0]);
39 for (unsigned i
= 0; i
< N
; ++i
)
41 std::complex<double> r
= tan(testcases
[i
]);
42 std::complex<double> t1(-imag(testcases
[i
]), real(testcases
[i
]));
43 std::complex<double> t2
= tanh(t1
);
44 std::complex<double> z(imag(t2
), -real(t2
));
45 if (std::isnan(real(r
)))
46 assert(std::isnan(real(z
)));
49 assert(real(r
) == real(z
));
50 assert(std::signbit(real(r
)) == std::signbit(real(z
)));
52 if (std::isnan(imag(r
)))
53 assert(std::isnan(imag(z
)));
56 assert(imag(r
) == imag(z
));
57 assert(std::signbit(imag(r
)) == std::signbit(imag(z
)));