diff options
author | arcadia-devtools <[email protected]> | 2022-02-10 17:53:52 +0300 |
---|---|---|
committer | arcadia-devtools <[email protected]> | 2022-02-10 17:53:52 +0300 |
commit | 5c64b97bb7e4034eff8833e4c367f61d34fcb4ee (patch) | |
tree | 7c5769528f2fcdaa5a718aa73e4aa64d50905269 /contrib/libs/cxxsupp/libcxx/include/complex | |
parent | 1b56f620ac98766b198121ca1b728e7e61efbb56 (diff) |
intermediate changes
ref:4635f4dd763168c3fa295f87727595c785b4d5a4
Diffstat (limited to 'contrib/libs/cxxsupp/libcxx/include/complex')
-rw-r--r-- | contrib/libs/cxxsupp/libcxx/include/complex | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/contrib/libs/cxxsupp/libcxx/include/complex b/contrib/libs/cxxsupp/libcxx/include/complex index e4c59193bce..e6443791f3f 100644 --- a/contrib/libs/cxxsupp/libcxx/include/complex +++ b/contrib/libs/cxxsupp/libcxx/include/complex @@ -1056,6 +1056,9 @@ complex<_Tp> exp(const complex<_Tp>& __x) { _Tp __i = __x.imag(); + if (__i == 0) { + return complex<_Tp>(exp(__x.real()), copysign(_Tp(0), __x.imag())); + } if (__libcpp_isinf_or_builtin(__x.real())) { if (__x.real() < _Tp(0)) @@ -1070,8 +1073,6 @@ exp(const complex<_Tp>& __x) return complex<_Tp>(__x.real(), __i); } } - else if (__libcpp_isnan_or_builtin(__x.real()) && __x.imag() == 0) - return __x; _Tp __e = exp(__x.real()); return complex<_Tp>(__e * cos(__i), __e * sin(__i)); } @@ -1269,8 +1270,8 @@ tanh(const complex<_Tp>& __x) if (__libcpp_isinf_or_builtin(__x.real())) { if (!__libcpp_isfinite_or_builtin(__x.imag())) - return complex<_Tp>(_Tp(1), _Tp(0)); - return complex<_Tp>(_Tp(1), copysign(_Tp(0), sin(_Tp(2) * __x.imag()))); + return complex<_Tp>(copysign(_Tp(1), __x.real()), _Tp(0)); + return complex<_Tp>(copysign(_Tp(1), __x.real()), copysign(_Tp(0), sin(_Tp(2) * __x.imag()))); } if (__libcpp_isnan_or_builtin(__x.real()) && __x.imag() == 0) return __x; |