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;