#include "libm.h"

#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
double nexttoward(double x, long double y) {
  return nextafter(x, y);
}
#else
double nexttoward(double x, long double y) {
  union {
    double f;
    uint64_t i;
  } ux = {x};
  int e;

  if (isnan(x) || isnan(y))
    return x + y;
  if (x == y)
    return y;
  if (x == 0) {
    ux.i = 1;
    if (signbit(y))
      ux.i |= 1ULL << 63;
  } else if (x < y) {
    if (signbit(x))
      ux.i--;
    else
      ux.i++;
  } else {
    if (signbit(x))
      ux.i++;
    else
      ux.i--;
  }
  e = ux.i >> 52 & 0x7ff;
  /* raise overflow if ux.f is infinite and x is finite */
  if (e == 0x7ff)
    FORCE_EVAL(x + x);
  /* raise underflow if ux.f is subnormal or zero */
  if (e == 0)
    FORCE_EVAL(x * x + ux.f * ux.f);
  return ux.f;
}
#endif
