| Index: fusl/src/math/sinh.c
|
| diff --git a/fusl/src/math/sinh.c b/fusl/src/math/sinh.c
|
| index 00022c4e6ff6d8250ea238207a12199a1e349dac..c94e59c847be4425789028d2b892f97ce51c3543 100644
|
| --- a/fusl/src/math/sinh.c
|
| +++ b/fusl/src/math/sinh.c
|
| @@ -4,36 +4,38 @@
|
| * = (exp(x)-1 + (exp(x)-1)/exp(x))/2
|
| * = x + x^3/6 + o(x^5)
|
| */
|
| -double sinh(double x)
|
| -{
|
| - union {double f; uint64_t i;} u = {.f = x};
|
| - uint32_t w;
|
| - double t, h, absx;
|
| +double sinh(double x) {
|
| + union {
|
| + double f;
|
| + uint64_t i;
|
| + } u = {.f = x};
|
| + uint32_t w;
|
| + double t, h, absx;
|
|
|
| - h = 0.5;
|
| - if (u.i >> 63)
|
| - h = -h;
|
| - /* |x| */
|
| - u.i &= (uint64_t)-1/2;
|
| - absx = u.f;
|
| - w = u.i >> 32;
|
| + h = 0.5;
|
| + if (u.i >> 63)
|
| + h = -h;
|
| + /* |x| */
|
| + u.i &= (uint64_t)-1 / 2;
|
| + absx = u.f;
|
| + w = u.i >> 32;
|
|
|
| - /* |x| < log(DBL_MAX) */
|
| - if (w < 0x40862e42) {
|
| - t = expm1(absx);
|
| - if (w < 0x3ff00000) {
|
| - if (w < 0x3ff00000 - (26<<20))
|
| - /* note: inexact and underflow are raised by expm1 */
|
| - /* note: this branch avoids spurious underflow */
|
| - return x;
|
| - return h*(2*t - t*t/(t+1));
|
| - }
|
| - /* note: |x|>log(0x1p26)+eps could be just h*exp(x) */
|
| - return h*(t + t/(t+1));
|
| - }
|
| + /* |x| < log(DBL_MAX) */
|
| + if (w < 0x40862e42) {
|
| + t = expm1(absx);
|
| + if (w < 0x3ff00000) {
|
| + if (w < 0x3ff00000 - (26 << 20))
|
| + /* note: inexact and underflow are raised by expm1 */
|
| + /* note: this branch avoids spurious underflow */
|
| + return x;
|
| + return h * (2 * t - t * t / (t + 1));
|
| + }
|
| + /* note: |x|>log(0x1p26)+eps could be just h*exp(x) */
|
| + return h * (t + t / (t + 1));
|
| + }
|
|
|
| - /* |x| > log(DBL_MAX) or nan */
|
| - /* note: the result is stored to handle overflow */
|
| - t = 2*h*__expo2(absx);
|
| - return t;
|
| + /* |x| > log(DBL_MAX) or nan */
|
| + /* note: the result is stored to handle overflow */
|
| + t = 2 * h * __expo2(absx);
|
| + return t;
|
| }
|
|
|