Home | History | Annotate | Line # | Download | only in math
      1 /* Return cosine of a complex type.
      2    Copyright (C) 1997-2018 Free Software Foundation, Inc.
      3    This file is part of the GNU C Library.
      4    Contributed by Ulrich Drepper <drepper (at) cygnus.com>, 1997.
      5 
      6    The GNU C Library is free software; you can redistribute it and/or
      7    modify it under the terms of the GNU Lesser General Public
      8    License as published by the Free Software Foundation; either
      9    version 2.1 of the License, or (at your option) any later version.
     10 
     11    The GNU C Library is distributed in the hope that it will be useful,
     12    but WITHOUT ANY WARRANTY; without even the implied warranty of
     13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14    Lesser General Public License for more details.
     15 
     16    You should have received a copy of the GNU Lesser General Public
     17    License along with the GNU C Library; if not, see
     18    <http://www.gnu.org/licenses/>.  */
     19 
     20 #include "quadmath-imp.h"
     21 
     22 __complex128
     23 cacosq (__complex128 x)
     24 {
     25   __complex128 y;
     26   __complex128 res;
     27   int rcls = fpclassifyq (__real__ x);
     28   int icls = fpclassifyq (__imag__ x);
     29 
     30   if (rcls <= QUADFP_INFINITE || icls <= QUADFP_INFINITE
     31       || (rcls == QUADFP_ZERO && icls == QUADFP_ZERO))
     32     {
     33       y = casinq (x);
     34 
     35       __real__ res = (__float128) M_PI_2q - __real__ y;
     36       if (__real__ res == 0)
     37 	__real__ res = 0;
     38       __imag__ res = -__imag__ y;
     39     }
     40   else
     41     {
     42       __real__ y = -__imag__ x;
     43       __imag__ y = __real__ x;
     44 
     45       y = __quadmath_kernel_casinhq (y, 1);
     46 
     47       __real__ res = __imag__ y;
     48       __imag__ res = __real__ y;
     49     }
     50 
     51   return res;
     52 }
     53