#include "libm.h"

/* sinh(x) = (exp(x) - 1/exp(x))/2
 *         = (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;

  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) or nan */
  /* note: the result is stored to handle overflow */
  t = 2 * h * __expo2(absx);
  return t;
}
