mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-04 03:44:59 +00:00
Add overflow check to tanh(complex) and reduce to finite answer. Fixes http://llvm.org/bugs/show_bug.cgi?id=13874
llvm-svn: 164266
This commit is contained in:
parent
38bfa0c529
commit
c43826f003
@ -1351,7 +1351,11 @@ tanh(const complex<_Tp>& __x)
|
||||
_Tp __2r(_Tp(2) * __x.real());
|
||||
_Tp __2i(_Tp(2) * __x.imag());
|
||||
_Tp __d(cosh(__2r) + cos(__2i));
|
||||
return complex<_Tp>(sinh(__2r)/__d, sin(__2i)/__d);
|
||||
_Tp __2rsh(sinh(__2r));
|
||||
if (isinf(__2rsh) && isinf(__d))
|
||||
return complex<_Tp>(__2rsh > _Tp(0) ? _Tp(1) : _Tp(-1),
|
||||
__2i > _Tp(0) ? _Tp(0) : _Tp(-0.));
|
||||
return complex<_Tp>(__2rsh/__d, sin(__2i)/__d);
|
||||
}
|
||||
|
||||
// asin
|
||||
|
@ -30,6 +30,7 @@ void
|
||||
test()
|
||||
{
|
||||
test(std::complex<T>(0, 0), std::complex<T>(0, 0));
|
||||
test(std::complex<T>(10000, -10000), std::complex<T>(0, -1));
|
||||
}
|
||||
|
||||
void test_edges()
|
||||
|
Loading…
Reference in New Issue
Block a user