#include "libm.h"

#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
long double cosl(long double x) {
  return cos(x);
}
#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
long double cosl(long double x) {
  union ldshape u = {x};
  unsigned n;
  long double y[2], hi, lo;

  u.i.se &= 0x7fff;
  if (u.i.se == 0x7fff)
    return x - x;
  x = u.f;
  if (x < M_PI_4) {
    if (u.i.se < 0x3fff - LDBL_MANT_DIG)
      /* raise inexact if x!=0 */
      return 1.0 + x;
    return __cosl(x, 0);
  }
  n = __rem_pio2l(x, y);
  hi = y[0];
  lo = y[1];
  switch (n & 3) {
    case 0:
      return __cosl(hi, lo);
    case 1:
      return -__sinl(hi, lo, 1);
    case 2:
      return -__cosl(hi, lo);
    case 3:
    default:
      return __sinl(hi, lo, 1);
  }
}
#endif
