https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80137

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
We need to handle targets without C99's nextafter, but maybe this would be OK:

      if (__builtin_expect(__ret >= _RealType(1), 0))
        {
#if _GLIBCXX_USE_C99_MATH_TR1
          __ret = std::nextafter(_RealType(1), _RealType(0));
#else
          __ret = _RealType(0);
#endif
        }

If we reach 1.0 it's because we're rounding up or to nearest, and so returning
zero in that case would counteract the decreased probability of getting zero
otherwise.

Reply via email to