#include "libm.h"

#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
long double coshl(long double x) { return cosh(x); }
#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
long double coshl(long double x) {
  union ldshape u = {x};
  unsigned ex = u.i.se & 0x7fff;
  uint32_t w;
  long double t;

  /* |x| */
  u.i.se = ex;
  x = u.f;
  w = u.i.m >> 32;

  /* |x| < log(2) */
  if (ex < 0x3fff - 1 || (ex == 0x3fff - 1 && w < 0xb17217f7)) {
    if (ex < 0x3fff - 32) {
      FORCE_EVAL(x + 0x1p120f);
      return 1;
    }
    t = expm1l(x);
    return 1 + t * t / (2 * (1 + t));
  }

  /* |x| < log(LDBL_MAX) */
  if (ex < 0x3fff + 13 || (ex == 0x3fff + 13 && w < 0xb17217f7)) {
    t = expl(x);
    return 0.5 * (t + 1 / t);
  }

  /* |x| > log(LDBL_MAX) or nan */
  t = expl(0.5 * x);
  return 0.5 * t * t;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double coshl(long double x) { return cosh(x); }
#endif
