/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the w64 mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER within this package.
 */
/*
   nexttoward.c
   Contributed by Danny Smith <dannysmith@users.sourceforge.net>
   No copyright claimed, absolutely no warranties.

   2005-05-10
*/

#include <math.h>

double
nexttoward (double x, long double y)
{
  union
  {
    double d;
    unsigned long long ll;
  } u;

  long double xx = x;

  if (isnan (y) || isnan (x))
    return x + y;

  if (xx == y)
     /* nextafter (0.0, -O.0) should return -0.0.  */
     return y;
  u.d = x; 
  if (x == 0.0)
    {
      u.ll = 1;
      return y > 0.0L ? u.d : -u.d;
    }

  /* Non-extended encodings are lexicographically ordered,
     with implicit "normal" bit.  */ 
  if (((x > 0.0) ^ (y > xx)) == 0)
    u.ll++;
  else
    u.ll--;
  return u.d;
}
