mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Optimization to some complex math functions
Also, change last reference to __sqrt into __sqrt to easily.
This commit is contained in:
26
ChangeLog
26
ChangeLog
@ -1,3 +1,29 @@
|
|||||||
|
2011-10-22 Ulrich Drepper <drepper@gmail.com>
|
||||||
|
|
||||||
|
* math/math_private.h: Define __nan, __nanf, __nanl.
|
||||||
|
* math/s_cacosh.c: Include <math_private.h>.
|
||||||
|
* math/s_cacoshl.c: Likewise.
|
||||||
|
* math/s_casinh.c: Likewise.
|
||||||
|
* math/s_casinhf.c: Likewise.
|
||||||
|
* math/s_casinhl.c: Likewise.
|
||||||
|
* math/s_ccos.c: Rely entire on ccosh.
|
||||||
|
* math/s_ccosf.c: Rely entire on ccoshf.
|
||||||
|
* math/s_ccosl.c: Rely entirely on ccoshl.
|
||||||
|
* math/s_ccosh.c: Add branch predicion helpers. Add branch prediction.
|
||||||
|
Remove tests for FE_INVALID.
|
||||||
|
* math/s_ccoshf.c: Likewise.
|
||||||
|
* math/s_ccoshl.c: Likewise.
|
||||||
|
* math/s_csin.c: Likewise.
|
||||||
|
* math/s_csinf.c: Likewise.
|
||||||
|
* math/s_csinh.c Likewise.
|
||||||
|
* math/s_csinhf.c: Likewise.
|
||||||
|
* math/s_csinhl.c: Likewise.
|
||||||
|
* math/s_csinl.c: Likewise.
|
||||||
|
* math/s_ctan.c: Likewise.
|
||||||
|
* sysdeps/ieee754/dbl-64/e_acosh.c: Use __ieee754_sqrt.
|
||||||
|
* sysdeps/ieee754/flt-32/e_acoshf.c: Use __ieee754_sqrtf.
|
||||||
|
* sysdeps/ieee754/ldbl-96/e_acoshl.c: Use __ieee754_sqrtl.
|
||||||
|
|
||||||
2011-10-21 Ulrich Drepper <drepper@gmail.com>
|
2011-10-21 Ulrich Drepper <drepper@gmail.com>
|
||||||
|
|
||||||
* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Fix
|
* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Fix
|
||||||
|
@ -395,4 +395,11 @@ extern void __docos (double __x, double __dx, double __v[]);
|
|||||||
#define libc_feupdateenvf(e) (void) feupdateenv (e)
|
#define libc_feupdateenvf(e) (void) feupdateenv (e)
|
||||||
#define libc_feupdateenvl(e) (void) feupdateenv (e)
|
#define libc_feupdateenvl(e) (void) feupdateenv (e)
|
||||||
|
|
||||||
|
#define __nan(str) \
|
||||||
|
(__builtin_constant_p (str) && str[0] == '\0' ? NAN : __nan (str))
|
||||||
|
#define __nanf(str) \
|
||||||
|
(__builtin_constant_p (str) && str[0] == '\0' ? NAN : __nan (str))
|
||||||
|
#define __nanl(str) \
|
||||||
|
(__builtin_constant_p (str) && str[0] == '\0' ? NAN : __nan (str))
|
||||||
|
|
||||||
#endif /* _MATH_PRIVATE_H_ */
|
#endif /* _MATH_PRIVATE_H_ */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Return arc hyperbole cosine for double value.
|
/* Return arc hyperbole cosine for double value.
|
||||||
Copyright (C) 1997, 2006 Free Software Foundation, Inc.
|
Copyright (C) 1997, 2006, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include <complex.h>
|
#include <complex.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <math_private.h>
|
||||||
|
|
||||||
|
|
||||||
__complex__ double
|
__complex__ double
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Return arc hyperbole cosine for long double value.
|
/* Return arc hyperbole cosine for long double value.
|
||||||
Copyright (C) 1997, 1998, 2006 Free Software Foundation, Inc.
|
Copyright (C) 1997, 1998, 2006, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include <complex.h>
|
#include <complex.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <math_private.h>
|
||||||
|
|
||||||
|
|
||||||
__complex__ long double
|
__complex__ long double
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Return arc hyperbole sine for double value.
|
/* Return arc hyperbole sine for double value.
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
Copyright (C) 1997, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include <complex.h>
|
#include <complex.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <math_private.h>
|
||||||
|
|
||||||
|
|
||||||
__complex__ double
|
__complex__ double
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Return arc hyperbole sine for float value.
|
/* Return arc hyperbole sine for float value.
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
Copyright (C) 1997, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include <complex.h>
|
#include <complex.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <math_private.h>
|
||||||
|
|
||||||
|
|
||||||
__complex__ float
|
__complex__ float
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Return arc hyperbole sine for long double value.
|
/* Return arc hyperbole sine for long double value.
|
||||||
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
|
Copyright (C) 1997, 1998, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include <complex.h>
|
#include <complex.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <math_private.h>
|
||||||
|
|
||||||
|
|
||||||
__complex__ long double
|
__complex__ long double
|
||||||
|
@ -26,53 +26,13 @@
|
|||||||
|
|
||||||
__complex__ double
|
__complex__ double
|
||||||
__ccos (__complex__ double x)
|
__ccos (__complex__ double x)
|
||||||
{
|
|
||||||
__complex__ double res;
|
|
||||||
|
|
||||||
if (!isfinite (__real__ x) || __isnan (__imag__ x))
|
|
||||||
{
|
|
||||||
if (__real__ x == 0.0 || __imag__ x == 0.0)
|
|
||||||
{
|
|
||||||
__real__ res = __nan ("");
|
|
||||||
__imag__ res = 0.0;
|
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (__isinf_ns (__real__ x))
|
|
||||||
feraiseexcept (FE_INVALID);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else if (__isinf_ns (__imag__ x))
|
|
||||||
{
|
|
||||||
__real__ res = HUGE_VAL;
|
|
||||||
__imag__ res = __nan ("");
|
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (__isinf_ns (__real__ x))
|
|
||||||
feraiseexcept (FE_INVALID);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
__real__ res = __nan ("");
|
|
||||||
__imag__ res = __nan ("");
|
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (isfinite (__imag__ x))
|
|
||||||
feraiseexcept (FE_INVALID);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
__complex__ double y;
|
__complex__ double y;
|
||||||
|
|
||||||
__real__ y = -__imag__ x;
|
__real__ y = -__imag__ x;
|
||||||
__imag__ y = __real__ x;
|
__imag__ y = __real__ x;
|
||||||
|
|
||||||
res = __ccosh (y);
|
return __ccosh (y);
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
weak_alias (__ccos, ccos)
|
weak_alias (__ccos, ccos)
|
||||||
#ifdef NO_LONG_DOUBLE
|
#ifdef NO_LONG_DOUBLE
|
||||||
|
@ -26,53 +26,13 @@
|
|||||||
|
|
||||||
__complex__ float
|
__complex__ float
|
||||||
__ccosf (__complex__ float x)
|
__ccosf (__complex__ float x)
|
||||||
{
|
|
||||||
__complex__ float res;
|
|
||||||
|
|
||||||
if (!isfinite (__real__ x) || __isnanf (__imag__ x))
|
|
||||||
{
|
|
||||||
if (__real__ x == 0.0 || __imag__ x == 0.0)
|
|
||||||
{
|
|
||||||
__real__ res = __nanf ("");
|
|
||||||
__imag__ res = 0.0;
|
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (__isinf_nsf (__real__ x))
|
|
||||||
feraiseexcept (FE_INVALID);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else if (__isinf_nsf (__imag__ x))
|
|
||||||
{
|
|
||||||
__real__ res = HUGE_VALF;
|
|
||||||
__imag__ res = __nanf ("");
|
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (__isinf_nsf (__real__ x))
|
|
||||||
feraiseexcept (FE_INVALID);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
__real__ res = __nanf ("");
|
|
||||||
__imag__ res = __nanf ("");
|
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (isfinite (__imag__ x))
|
|
||||||
feraiseexcept (FE_INVALID);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
__complex__ float y;
|
__complex__ float y;
|
||||||
|
|
||||||
__real__ y = -__imag__ x;
|
__real__ y = -__imag__ x;
|
||||||
__imag__ y = __real__ x;
|
__imag__ y = __real__ x;
|
||||||
|
|
||||||
res = __ccoshf (y);
|
return __ccoshf (y);
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
#ifndef __ccosf
|
#ifndef __ccosf
|
||||||
weak_alias (__ccosf, ccosf)
|
weak_alias (__ccosf, ccosf)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Complex cosine hyperbole function for double.
|
/* Complex cosine hyperbole function for double.
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
Copyright (C) 1997, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -32,10 +32,10 @@ __ccosh (__complex__ double x)
|
|||||||
int rcls = fpclassify (__real__ x);
|
int rcls = fpclassify (__real__ x);
|
||||||
int icls = fpclassify (__imag__ x);
|
int icls = fpclassify (__imag__ x);
|
||||||
|
|
||||||
if (rcls >= FP_ZERO)
|
if (__builtin_expect (rcls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Real part is finite. */
|
/* Real part is finite. */
|
||||||
if (icls >= FP_ZERO)
|
if (__builtin_expect (icls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
double sinh_val = __ieee754_sinh (__real__ x);
|
double sinh_val = __ieee754_sinh (__real__ x);
|
||||||
@ -52,22 +52,14 @@ __ccosh (__complex__ double x)
|
|||||||
__imag__ retval = __real__ x == 0.0 ? 0.0 : __nan ("");
|
__imag__ retval = __real__ x == 0.0 ? 0.0 : __nan ("");
|
||||||
__real__ retval = __nan ("") + __nan ("");
|
__real__ retval = __nan ("") + __nan ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (icls == FP_INFINITE)
|
if (icls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (rcls == FP_INFINITE)
|
else if (rcls == FP_INFINITE)
|
||||||
{
|
{
|
||||||
/* Real part is infinite. */
|
/* Real part is infinite. */
|
||||||
if (icls == FP_ZERO)
|
if (__builtin_expect (icls > FP_ZERO, 1))
|
||||||
{
|
|
||||||
/* Imaginary part is 0.0. */
|
|
||||||
__real__ retval = HUGE_VAL;
|
|
||||||
__imag__ retval = __imag__ x * __copysign (1.0, __real__ x);
|
|
||||||
}
|
|
||||||
else if (icls > FP_ZERO)
|
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
double sinix, cosix;
|
double sinix, cosix;
|
||||||
@ -78,16 +70,20 @@ __ccosh (__complex__ double x)
|
|||||||
__imag__ retval = (__copysign (HUGE_VAL, sinix)
|
__imag__ retval = (__copysign (HUGE_VAL, sinix)
|
||||||
* __copysign (1.0, __real__ x));
|
* __copysign (1.0, __real__ x));
|
||||||
}
|
}
|
||||||
|
else if (icls == FP_ZERO)
|
||||||
|
{
|
||||||
|
/* Imaginary part is 0.0. */
|
||||||
|
__real__ retval = HUGE_VAL;
|
||||||
|
__imag__ retval = __imag__ x * __copysign (1.0, __real__ x);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* The addition raises the invalid exception. */
|
/* The addition raises the invalid exception. */
|
||||||
__real__ retval = HUGE_VAL;
|
__real__ retval = HUGE_VAL;
|
||||||
__imag__ retval = __nan ("") + __nan ("");
|
__imag__ retval = __nan ("") + __nan ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (icls == FP_INFINITE)
|
if (icls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Complex cosine hyperbole function for float.
|
/* Complex cosine hyperbole function for float.
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
Copyright (C) 1997, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -32,10 +32,10 @@ __ccoshf (__complex__ float x)
|
|||||||
int rcls = fpclassify (__real__ x);
|
int rcls = fpclassify (__real__ x);
|
||||||
int icls = fpclassify (__imag__ x);
|
int icls = fpclassify (__imag__ x);
|
||||||
|
|
||||||
if (rcls >= FP_ZERO)
|
if (__builtin_expect (rcls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Real part is finite. */
|
/* Real part is finite. */
|
||||||
if (icls >= FP_ZERO)
|
if (__builtin_expect (icls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
float sinh_val = __ieee754_sinhf (__real__ x);
|
float sinh_val = __ieee754_sinhf (__real__ x);
|
||||||
@ -52,22 +52,14 @@ __ccoshf (__complex__ float x)
|
|||||||
__imag__ retval = __real__ x == 0.0 ? 0.0 : __nanf ("");
|
__imag__ retval = __real__ x == 0.0 ? 0.0 : __nanf ("");
|
||||||
__real__ retval = __nanf ("");
|
__real__ retval = __nanf ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (icls == FP_INFINITE)
|
if (icls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (rcls == FP_INFINITE)
|
else if (__builtin_expect (rcls == FP_INFINITE, 1))
|
||||||
{
|
{
|
||||||
/* Real part is infinite. */
|
/* Real part is infinite. */
|
||||||
if (icls == FP_ZERO)
|
if (__builtin_expect (icls > FP_ZERO, 1))
|
||||||
{
|
|
||||||
/* Imaginary part is 0.0. */
|
|
||||||
__real__ retval = HUGE_VALF;
|
|
||||||
__imag__ retval = __imag__ x * __copysignf (1.0, __real__ x);
|
|
||||||
}
|
|
||||||
else if (icls > FP_ZERO)
|
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
float sinix, cosix;
|
float sinix, cosix;
|
||||||
@ -78,6 +70,12 @@ __ccoshf (__complex__ float x)
|
|||||||
__imag__ retval = (__copysignf (HUGE_VALF, sinix)
|
__imag__ retval = (__copysignf (HUGE_VALF, sinix)
|
||||||
* __copysignf (1.0, __real__ x));
|
* __copysignf (1.0, __real__ x));
|
||||||
}
|
}
|
||||||
|
else if (icls == FP_ZERO)
|
||||||
|
{
|
||||||
|
/* Imaginary part is 0.0. */
|
||||||
|
__real__ retval = HUGE_VALF;
|
||||||
|
__imag__ retval = __imag__ x * __copysignf (1.0, __real__ x);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* The addition raises the invalid exception. */
|
/* The addition raises the invalid exception. */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Complex cosine hyperbole function for long double.
|
/* Complex cosine hyperbole function for long double.
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
Copyright (C) 1997, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -32,10 +32,10 @@ __ccoshl (__complex__ long double x)
|
|||||||
int rcls = fpclassify (__real__ x);
|
int rcls = fpclassify (__real__ x);
|
||||||
int icls = fpclassify (__imag__ x);
|
int icls = fpclassify (__imag__ x);
|
||||||
|
|
||||||
if (rcls >= FP_ZERO)
|
if (__builtin_expect (rcls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Real part is finite. */
|
/* Real part is finite. */
|
||||||
if (icls >= FP_ZERO)
|
if (__builtin_expect (icls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
long double sinh_val = __ieee754_sinhl (__real__ x);
|
long double sinh_val = __ieee754_sinhl (__real__ x);
|
||||||
@ -52,22 +52,14 @@ __ccoshl (__complex__ long double x)
|
|||||||
__imag__ retval = __real__ x == 0.0 ? 0.0 : __nanl ("");
|
__imag__ retval = __real__ x == 0.0 ? 0.0 : __nanl ("");
|
||||||
__real__ retval = __nanl ("") + __nanl ("");
|
__real__ retval = __nanl ("") + __nanl ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (icls == FP_INFINITE)
|
if (icls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (rcls == FP_INFINITE)
|
else if (__builtin_expect (rcls == FP_INFINITE, 1))
|
||||||
{
|
{
|
||||||
/* Real part is infinite. */
|
/* Real part is infinite. */
|
||||||
if (icls == FP_ZERO)
|
if (__builtin_expect (icls > FP_ZERO, 1))
|
||||||
{
|
|
||||||
/* Imaginary part is 0.0. */
|
|
||||||
__real__ retval = HUGE_VALL;
|
|
||||||
__imag__ retval = __imag__ x * __copysignl (1.0, __real__ x);
|
|
||||||
}
|
|
||||||
else if (icls > FP_ZERO)
|
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
long double sinix, cosix;
|
long double sinix, cosix;
|
||||||
@ -78,16 +70,20 @@ __ccoshl (__complex__ long double x)
|
|||||||
__imag__ retval = (__copysignl (HUGE_VALL, sinix)
|
__imag__ retval = (__copysignl (HUGE_VALL, sinix)
|
||||||
* __copysignl (1.0, __real__ x));
|
* __copysignl (1.0, __real__ x));
|
||||||
}
|
}
|
||||||
|
else if (icls == FP_ZERO)
|
||||||
|
{
|
||||||
|
/* Imaginary part is 0.0. */
|
||||||
|
__real__ retval = HUGE_VALL;
|
||||||
|
__imag__ retval = __imag__ x * __copysignl (1.0, __real__ x);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* The addition raises the invalid exception. */
|
/* The addition raises the invalid exception. */
|
||||||
__real__ retval = HUGE_VALL;
|
__real__ retval = HUGE_VALL;
|
||||||
__imag__ retval = __nanl ("") + __nanl ("");
|
__imag__ retval = __nanl ("") + __nanl ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (icls == FP_INFINITE)
|
if (icls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -26,52 +26,12 @@
|
|||||||
|
|
||||||
__complex__ long double
|
__complex__ long double
|
||||||
__ccosl (__complex__ long double x)
|
__ccosl (__complex__ long double x)
|
||||||
{
|
|
||||||
__complex__ long double res;
|
|
||||||
|
|
||||||
if (!isfinite (__real__ x) || __isnanl (__imag__ x))
|
|
||||||
{
|
|
||||||
if (__real__ x == 0.0 || __imag__ x == 0.0)
|
|
||||||
{
|
|
||||||
__real__ res = __nanl ("");
|
|
||||||
__imag__ res = 0.0;
|
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (__isinf_nsl (__real__ x))
|
|
||||||
feraiseexcept (FE_INVALID);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else if (__isinf_nsl (__imag__ x))
|
|
||||||
{
|
|
||||||
__real__ res = HUGE_VALL;
|
|
||||||
__imag__ res = __nanl ("");
|
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (__isinf_nsl (__real__ x))
|
|
||||||
feraiseexcept (FE_INVALID);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
__real__ res = __nanl ("");
|
|
||||||
__imag__ res = __nanl ("");
|
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (isfinite (__imag__ x))
|
|
||||||
feraiseexcept (FE_INVALID);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
__complex__ long double y;
|
__complex__ long double y;
|
||||||
|
|
||||||
__real__ y = -__imag__ x;
|
__real__ y = -__imag__ x;
|
||||||
__imag__ y = __real__ x;
|
__imag__ y = __real__ x;
|
||||||
|
|
||||||
res = __ccoshl (y);
|
return __ccoshl (y);
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
weak_alias (__ccosl, ccosl)
|
weak_alias (__ccosl, ccosl)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Complex sine function for double.
|
/* Complex sine function for double.
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
Copyright (C) 1997, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -35,10 +35,10 @@ __csin (__complex__ double x)
|
|||||||
|
|
||||||
__real__ x = fabs (__real__ x);
|
__real__ x = fabs (__real__ x);
|
||||||
|
|
||||||
if (icls >= FP_ZERO)
|
if (__builtin_expect (icls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
if (rcls >= FP_ZERO)
|
if (__builtin_expect (rcls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Real part is finite. */
|
/* Real part is finite. */
|
||||||
double sinh_val = __ieee754_sinh (__imag__ x);
|
double sinh_val = __ieee754_sinh (__imag__ x);
|
||||||
@ -61,19 +61,15 @@ __csin (__complex__ double x)
|
|||||||
__real__ retval = __nan ("");
|
__real__ retval = __nan ("");
|
||||||
__imag__ retval = __imag__ x;
|
__imag__ retval = __imag__ x;
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (rcls == FP_INFINITE)
|
if (rcls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
__real__ retval = __nan ("");
|
__real__ retval = __nan ("");
|
||||||
__imag__ retval = __nan ("");
|
__imag__ retval = __nan ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -107,10 +103,8 @@ __csin (__complex__ double x)
|
|||||||
__real__ retval = __nan ("");
|
__real__ retval = __nan ("");
|
||||||
__imag__ retval = HUGE_VAL;
|
__imag__ retval = HUGE_VAL;
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (rcls == FP_INFINITE)
|
if (rcls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Complex sine function for float.
|
/* Complex sine function for float.
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
Copyright (C) 1997, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -35,10 +35,10 @@ __csinf (__complex__ float x)
|
|||||||
|
|
||||||
__real__ x = fabsf (__real__ x);
|
__real__ x = fabsf (__real__ x);
|
||||||
|
|
||||||
if (icls >= FP_ZERO)
|
if (__builtin_expect (icls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
if (rcls >= FP_ZERO)
|
if (__builtin_expect (rcls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Real part is finite. */
|
/* Real part is finite. */
|
||||||
float sinh_val = __ieee754_sinhf (__imag__ x);
|
float sinh_val = __ieee754_sinhf (__imag__ x);
|
||||||
@ -61,19 +61,15 @@ __csinf (__complex__ float x)
|
|||||||
__real__ retval = __nanf ("");
|
__real__ retval = __nanf ("");
|
||||||
__imag__ retval = __imag__ x;
|
__imag__ retval = __imag__ x;
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (rcls == FP_INFINITE)
|
if (rcls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
__real__ retval = __nanf ("");
|
__real__ retval = __nanf ("");
|
||||||
__imag__ retval = __nanf ("");
|
__imag__ retval = __nanf ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -107,10 +103,8 @@ __csinf (__complex__ float x)
|
|||||||
__real__ retval = __nanf ("");
|
__real__ retval = __nanf ("");
|
||||||
__imag__ retval = HUGE_VALF;
|
__imag__ retval = HUGE_VALF;
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (rcls == FP_INFINITE)
|
if (rcls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Complex sine hyperbole function for double.
|
/* Complex sine hyperbole function for double.
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
Copyright (C) 1997, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -35,10 +35,10 @@ __csinh (__complex__ double x)
|
|||||||
|
|
||||||
__real__ x = fabs (__real__ x);
|
__real__ x = fabs (__real__ x);
|
||||||
|
|
||||||
if (rcls >= FP_ZERO)
|
if (__builtin_expect (rcls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Real part is finite. */
|
/* Real part is finite. */
|
||||||
if (icls >= FP_ZERO)
|
if (__builtin_expect (icls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
double sinh_val = __ieee754_sinh (__real__ x);
|
double sinh_val = __ieee754_sinh (__real__ x);
|
||||||
@ -61,32 +61,22 @@ __csinh (__complex__ double x)
|
|||||||
__real__ retval = __copysign (0.0, negate ? -1.0 : 1.0);
|
__real__ retval = __copysign (0.0, negate ? -1.0 : 1.0);
|
||||||
__imag__ retval = __nan ("") + __nan ("");
|
__imag__ retval = __nan ("") + __nan ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (icls == FP_INFINITE)
|
if (icls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
__real__ retval = __nan ("");
|
__real__ retval = __nan ("");
|
||||||
__imag__ retval = __nan ("");
|
__imag__ retval = __nan ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (rcls == FP_INFINITE)
|
else if (rcls == FP_INFINITE)
|
||||||
{
|
{
|
||||||
/* Real part is infinite. */
|
/* Real part is infinite. */
|
||||||
if (icls == FP_ZERO)
|
if (__builtin_expect (icls > FP_ZERO, 1))
|
||||||
{
|
|
||||||
/* Imaginary part is 0.0. */
|
|
||||||
__real__ retval = negate ? -HUGE_VAL : HUGE_VAL;
|
|
||||||
__imag__ retval = __imag__ x;
|
|
||||||
}
|
|
||||||
else if (icls > FP_ZERO)
|
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
double sinix, cosix;
|
double sinix, cosix;
|
||||||
@ -99,16 +89,20 @@ __csinh (__complex__ double x)
|
|||||||
if (negate)
|
if (negate)
|
||||||
__real__ retval = -__real__ retval;
|
__real__ retval = -__real__ retval;
|
||||||
}
|
}
|
||||||
|
else if (icls == FP_ZERO)
|
||||||
|
{
|
||||||
|
/* Imaginary part is 0.0. */
|
||||||
|
__real__ retval = negate ? -HUGE_VAL : HUGE_VAL;
|
||||||
|
__imag__ retval = __imag__ x;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* The addition raises the invalid exception. */
|
/* The addition raises the invalid exception. */
|
||||||
__real__ retval = HUGE_VAL;
|
__real__ retval = HUGE_VAL;
|
||||||
__imag__ retval = __nan ("") + __nan ("");
|
__imag__ retval = __nan ("") + __nan ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (icls == FP_INFINITE)
|
if (icls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Complex sine hyperbole function for float.
|
/* Complex sine hyperbole function for float.
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
Copyright (C) 1997, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -35,10 +35,10 @@ __csinhf (__complex__ float x)
|
|||||||
|
|
||||||
__real__ x = fabsf (__real__ x);
|
__real__ x = fabsf (__real__ x);
|
||||||
|
|
||||||
if (rcls >= FP_ZERO)
|
if (__builtin_expect (rcls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Real part is finite. */
|
/* Real part is finite. */
|
||||||
if (icls >= FP_ZERO)
|
if (__builtin_expect (icls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
float sinh_val = __ieee754_sinhf (__real__ x);
|
float sinh_val = __ieee754_sinhf (__real__ x);
|
||||||
@ -61,32 +61,22 @@ __csinhf (__complex__ float x)
|
|||||||
__real__ retval = __copysignf (0.0, negate ? -1.0 : 1.0);
|
__real__ retval = __copysignf (0.0, negate ? -1.0 : 1.0);
|
||||||
__imag__ retval = __nanf ("") + __nanf ("");
|
__imag__ retval = __nanf ("") + __nanf ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (icls == FP_INFINITE)
|
if (icls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
__real__ retval = __nanf ("");
|
__real__ retval = __nanf ("");
|
||||||
__imag__ retval = __nanf ("");
|
__imag__ retval = __nanf ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (rcls == FP_INFINITE)
|
else if (__builtin_expect (rcls == FP_INFINITE, 1))
|
||||||
{
|
{
|
||||||
/* Real part is infinite. */
|
/* Real part is infinite. */
|
||||||
if (icls == FP_ZERO)
|
if (__builtin_expect (icls > FP_ZERO, 1))
|
||||||
{
|
|
||||||
/* Imaginary part is 0.0. */
|
|
||||||
__real__ retval = negate ? -HUGE_VALF : HUGE_VALF;
|
|
||||||
__imag__ retval = __imag__ x;
|
|
||||||
}
|
|
||||||
else if (icls > FP_ZERO)
|
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
float sinix, cosix;
|
float sinix, cosix;
|
||||||
@ -99,6 +89,12 @@ __csinhf (__complex__ float x)
|
|||||||
if (negate)
|
if (negate)
|
||||||
__real__ retval = -__real__ retval;
|
__real__ retval = -__real__ retval;
|
||||||
}
|
}
|
||||||
|
else if (icls == FP_ZERO)
|
||||||
|
{
|
||||||
|
/* Imaginary part is 0.0. */
|
||||||
|
__real__ retval = negate ? -HUGE_VALF : HUGE_VALF;
|
||||||
|
__imag__ retval = __imag__ x;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* The addition raises the invalid exception. */
|
/* The addition raises the invalid exception. */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Complex sine hyperbole function for long double.
|
/* Complex sine hyperbole function for long double.
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
Copyright (C) 1997, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -35,10 +35,10 @@ __csinhl (__complex__ long double x)
|
|||||||
|
|
||||||
__real__ x = fabsl (__real__ x);
|
__real__ x = fabsl (__real__ x);
|
||||||
|
|
||||||
if (rcls >= FP_ZERO)
|
if (__builtin_expect (rcls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Real part is finite. */
|
/* Real part is finite. */
|
||||||
if (icls >= FP_ZERO)
|
if (__builtin_expect (icls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
long double sinh_val = __ieee754_sinhl (__real__ x);
|
long double sinh_val = __ieee754_sinhl (__real__ x);
|
||||||
@ -61,32 +61,22 @@ __csinhl (__complex__ long double x)
|
|||||||
__real__ retval = __copysignl (0.0, negate ? -1.0 : 1.0);
|
__real__ retval = __copysignl (0.0, negate ? -1.0 : 1.0);
|
||||||
__imag__ retval = __nanl ("") + __nanl ("");
|
__imag__ retval = __nanl ("") + __nanl ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (icls == FP_INFINITE)
|
if (icls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
__real__ retval = __nanl ("");
|
__real__ retval = __nanl ("");
|
||||||
__imag__ retval = __nanl ("");
|
__imag__ retval = __nanl ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (rcls == FP_INFINITE)
|
else if (__builtin_expect (rcls == FP_INFINITE, 1))
|
||||||
{
|
{
|
||||||
/* Real part is infinite. */
|
/* Real part is infinite. */
|
||||||
if (icls == FP_ZERO)
|
if (__builtin_expect (icls > FP_ZERO, 1))
|
||||||
{
|
|
||||||
/* Imaginary part is 0.0. */
|
|
||||||
__real__ retval = negate ? -HUGE_VALL : HUGE_VALL;
|
|
||||||
__imag__ retval = __imag__ x;
|
|
||||||
}
|
|
||||||
else if (icls > FP_ZERO)
|
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
long double sinix, cosix;
|
long double sinix, cosix;
|
||||||
@ -99,6 +89,12 @@ __csinhl (__complex__ long double x)
|
|||||||
if (negate)
|
if (negate)
|
||||||
__real__ retval = -__real__ retval;
|
__real__ retval = -__real__ retval;
|
||||||
}
|
}
|
||||||
|
else if (icls == FP_ZERO)
|
||||||
|
{
|
||||||
|
/* Imaginary part is 0.0. */
|
||||||
|
__real__ retval = negate ? -HUGE_VALL : HUGE_VALL;
|
||||||
|
__imag__ retval = __imag__ x;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* The addition raises the invalid exception. */
|
/* The addition raises the invalid exception. */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Complex sine function for long double.
|
/* Complex sine function for long double.
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
Copyright (C) 1997, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||||
|
|
||||||
@ -35,10 +35,10 @@ __csinl (__complex__ long double x)
|
|||||||
|
|
||||||
__real__ x = fabsl (__real__ x);
|
__real__ x = fabsl (__real__ x);
|
||||||
|
|
||||||
if (icls >= FP_ZERO)
|
if (__builtin_expect (icls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Imaginary part is finite. */
|
/* Imaginary part is finite. */
|
||||||
if (rcls >= FP_ZERO)
|
if (__builtin_expect (rcls >= FP_ZERO, 1))
|
||||||
{
|
{
|
||||||
/* Real part is finite. */
|
/* Real part is finite. */
|
||||||
long double sinh_val = __ieee754_sinhl (__imag__ x);
|
long double sinh_val = __ieee754_sinhl (__imag__ x);
|
||||||
@ -61,19 +61,15 @@ __csinl (__complex__ long double x)
|
|||||||
__real__ retval = __nanl ("");
|
__real__ retval = __nanl ("");
|
||||||
__imag__ retval = __imag__ x;
|
__imag__ retval = __imag__ x;
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (rcls == FP_INFINITE)
|
if (rcls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
__real__ retval = __nanl ("");
|
__real__ retval = __nanl ("");
|
||||||
__imag__ retval = __nanl ("");
|
__imag__ retval = __nanl ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -107,10 +103,8 @@ __csinl (__complex__ long double x)
|
|||||||
__real__ retval = __nanl ("");
|
__real__ retval = __nanl ("");
|
||||||
__imag__ retval = HUGE_VALL;
|
__imag__ retval = HUGE_VALL;
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (rcls == FP_INFINITE)
|
if (rcls == FP_INFINITE)
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -30,7 +30,7 @@ __ctan (__complex__ double x)
|
|||||||
{
|
{
|
||||||
__complex__ double res;
|
__complex__ double res;
|
||||||
|
|
||||||
if (!isfinite (__real__ x) || !isfinite (__imag__ x))
|
if (__builtin_expect (!isfinite (__real__ x) || !isfinite (__imag__ x), 0))
|
||||||
{
|
{
|
||||||
if (__isinf_ns (__imag__ x))
|
if (__isinf_ns (__imag__ x))
|
||||||
{
|
{
|
||||||
@ -46,10 +46,8 @@ __ctan (__complex__ double x)
|
|||||||
__real__ res = __nan ("");
|
__real__ res = __nan ("");
|
||||||
__imag__ res = __nan ("");
|
__imag__ res = __nan ("");
|
||||||
|
|
||||||
#ifdef FE_INVALID
|
|
||||||
if (__isinf_ns (__real__ x))
|
if (__isinf_ns (__real__ x))
|
||||||
feraiseexcept (FE_INVALID);
|
feraiseexcept (FE_INVALID);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -52,7 +52,7 @@ __ieee754_acosh(double x)
|
|||||||
return __ieee754_log(2.0*x-one/(x+__ieee754_sqrt(t-one)));
|
return __ieee754_log(2.0*x-one/(x+__ieee754_sqrt(t-one)));
|
||||||
} else { /* 1<x<2 */
|
} else { /* 1<x<2 */
|
||||||
t = x-one;
|
t = x-one;
|
||||||
return __log1p(t+__sqrt(2.0*t+t*t));
|
return __log1p(t+__ieee754_sqrt(2.0*t+t*t));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
strong_alias (__ieee754_acosh, __acosh_finite)
|
strong_alias (__ieee754_acosh, __acosh_finite)
|
||||||
|
@ -52,7 +52,7 @@ ln2 = 6.9314718246e-01; /* 0x3f317218 */
|
|||||||
return __ieee754_logf((float)2.0*x-one/(x+__ieee754_sqrtf(t-one)));
|
return __ieee754_logf((float)2.0*x-one/(x+__ieee754_sqrtf(t-one)));
|
||||||
} else { /* 1<x<2 */
|
} else { /* 1<x<2 */
|
||||||
t = x-one;
|
t = x-one;
|
||||||
return __log1pf(t+__sqrtf((float)2.0*t+t*t));
|
return __log1pf(t+__ieee754_sqrtf((float)2.0*t+t*t));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
strong_alias (__ieee754_acoshf, __acoshf_finite)
|
strong_alias (__ieee754_acoshf, __acoshf_finite)
|
||||||
|
@ -55,7 +55,7 @@ __ieee754_acoshl(long double x)
|
|||||||
return __ieee754_logl(2.0*x-one/(x+__ieee754_sqrtl(t-one)));
|
return __ieee754_logl(2.0*x-one/(x+__ieee754_sqrtl(t-one)));
|
||||||
} else { /* 1<x<2 */
|
} else { /* 1<x<2 */
|
||||||
t = x-one;
|
t = x-one;
|
||||||
return __log1pl(t+__sqrtl(2.0*t+t*t));
|
return __log1pl(t+__ieee754_sqrtl(2.0*t+t*t));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
strong_alias (__ieee754_acoshl, __acoshl_finite)
|
strong_alias (__ieee754_acoshl, __acoshl_finite)
|
||||||
|
Reference in New Issue
Block a user