#include "libm.h"

float coshf(float x) {
  union {
    float f;
    uint32_t i;
  } u = {.f = x};
  uint32_t w;
  float t;

  /* |x| */
  u.i &= 0x7fffffff;
  x = u.f;
  w = u.i;

  /* |x| < log(2) */
  if (w < 0x3f317217) {
    if (w < 0x3f800000 - (12 << 23)) {
      FORCE_EVAL(x + 0x1p120f);
      return 1;
    }
    t = expm1f(x);
    return 1 + t * t / (2 * (1 + t));
  }

  /* |x| < log(FLT_MAX) */
  if (w < 0x42b17217) {
    t = expf(x);
    return 0.5f * (t + 1 / t);
  }

  /* |x| > log(FLT_MAX) or nan */
  t = __expo2f(x);
  return t;
}
