#include "libm.h"

#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
long double sinl(long double x) {
  return sin(x);
}
#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
long double sinl(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;
  if (u.f < M_PI_4) {
    if (u.i.se < 0x3fff - LDBL_MANT_DIG / 2) {
      /* raise inexact if x!=0 and underflow if subnormal */
      FORCE_EVAL(u.i.se == 0 ? x * 0x1p-120f : x + 0x1p120f);
      return x;
    }
    return __sinl(x, 0.0, 0);
  }
  n = __rem_pio2l(x, y);
  hi = y[0];
  lo = y[1];
  switch (n & 3) {
    case 0:
      return __sinl(hi, lo, 1);
    case 1:
      return __cosl(hi, lo);
    case 2:
      return -__sinl(hi, lo, 1);
    case 3:
    default:
      return -__cosl(hi, lo);
  }
}
#endif
