Mercurial > hg > CbC > CbC_gcc
diff libquadmath/math/casinhq.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line diff
--- a/libquadmath/math/casinhq.c Thu Oct 25 07:37:49 2018 +0900 +++ b/libquadmath/math/casinhq.c Thu Feb 13 11:34:05 2020 +0900 @@ -1,5 +1,5 @@ -/* Return arc hyperbole sine for __float128 value. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Return arc hyperbolic sine for a complex float type. + Copyright (C) 1997-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -14,13 +14,11 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ #include "quadmath-imp.h" - __complex128 casinhq (__complex128 x) { @@ -37,15 +35,16 @@ if (rcls == QUADFP_NAN) __imag__ res = nanq (""); else - __imag__ res = copysignq (rcls >= QUADFP_ZERO ? M_PI_2q : M_PI_4q, - __imag__ x); + __imag__ res = copysignq ((rcls >= QUADFP_ZERO + ? M_PI_2q : M_PI_4q), + __imag__ x); } else if (rcls <= QUADFP_INFINITE) { __real__ res = __real__ x; if ((rcls == QUADFP_INFINITE && icls >= QUADFP_ZERO) || (rcls == QUADFP_NAN && icls == QUADFP_ZERO)) - __imag__ res = copysignq (0.0, __imag__ x); + __imag__ res = copysignq (0, __imag__ x); else __imag__ res = nanq (""); } @@ -61,22 +60,7 @@ } else { - __complex128 y; - - __real__ y = (__real__ x - __imag__ x) * (__real__ x + __imag__ x) + 1.0; - __imag__ y = 2.0 * __real__ x * __imag__ x; - - y = csqrtq (y); - - __real__ y += __real__ x; - __imag__ y += __imag__ x; - - res = clogq (y); - - /* Ensure zeros have correct sign and results are correct if - very close to branch cuts. */ - __real__ res = copysignq (__real__ res, __real__ x); - __imag__ res = copysignq (__imag__ res, __imag__ x); + res = __quadmath_kernel_casinhq (x, 0); } return res;