Fix for Bug #27193; 'std::acos on complex does not agree with C'. Tests need work; so the bug will stay open.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@265306 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1399,7 +1399,7 @@ acos(const complex<_Tp>& __x)
|
|||||||
}
|
}
|
||||||
if (isinf(__x.imag()))
|
if (isinf(__x.imag()))
|
||||||
return complex<_Tp>(__pi/_Tp(2), -__x.imag());
|
return complex<_Tp>(__pi/_Tp(2), -__x.imag());
|
||||||
if (__x.real() == 0)
|
if (__x.real() == 0 && (__x.imag() == 0 || isnan(__x.imag())))
|
||||||
return complex<_Tp>(__pi/_Tp(2), -__x.imag());
|
return complex<_Tp>(__pi/_Tp(2), -__x.imag());
|
||||||
complex<_Tp> __z = log(__x + sqrt(pow(__x, _Tp(2)) - _Tp(1)));
|
complex<_Tp> __z = log(__x + sqrt(pow(__x, _Tp(2)) - _Tp(1)));
|
||||||
if (signbit(__x.imag()))
|
if (signbit(__x.imag()))
|
||||||
|
|||||||
Reference in New Issue
Block a user