diff options
Diffstat (limited to 'winsup/cygwin/math/coshl.c')
-rw-r--r-- | winsup/cygwin/math/coshl.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/winsup/cygwin/math/coshl.c b/winsup/cygwin/math/coshl.c new file mode 100644 index 000000000..d7eb4b7cb --- /dev/null +++ b/winsup/cygwin/math/coshl.c @@ -0,0 +1,45 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ +#include "cephes_mconf.h" + +#ifndef _SET_ERRNO +#define _SET_ERRNO(x) +#endif + +long double coshl(long double x) +{ + long double y; + int x_class = fpclassify (x); + if (x_class == FP_NAN) + { + errno = EDOM; + return x; + } + else if (x_class == FP_INFINITE) + { + errno = ERANGE; + return x; + } + x = fabsl (x); + if (x > (MAXLOGL + LOGE2L)) + { + errno = ERANGE; +#ifdef INFINITIES + return (INFINITYL); +#else + return (MAXNUML); +#endif + } + if (x >= (MAXLOGL - LOGE2L)) + { + y = expl(0.5L * x); + y = (0.5L * y) * y; + return y; + } + y = expl(x); + y = 0.5L * (y + 1.0L / y); + return y; +} |