[libc-commits] [llvm] [libc] [libc][math] Implement nexttoward functions (PR #72763)
Nick Desaulniers via libc-commits
libc-commits at lists.llvm.org
Thu Nov 30 12:37:09 PST 2023
================
@@ -169,8 +171,50 @@ LIBC_INLINE T nextafter(T from, T to) {
int_val = (to_bits.uintval() & sign_mask) + UIntType(1);
}
+ UIntType exponent_bits = int_val & FloatProperties<T>::EXPONENT_MASK;
+ if (exponent_bits == UIntType(0))
+ raise_except_if_required(FE_UNDERFLOW | FE_INEXACT);
+ else if (exponent_bits == FloatProperties<T>::EXPONENT_MASK)
+ raise_except_if_required(FE_OVERFLOW | FE_INEXACT);
+
+ return cpp::bit_cast<T>(int_val);
+}
+
+template <typename T>
+LIBC_INLINE cpp::enable_if_t<cpp::is_floating_point_v<T>, T>
+nexttoward(T from, long double to) {
+ FPBits<T> from_bits(from);
+ if (from_bits.is_nan())
+ return from;
+
+ FPBits<long double> to_bits(to);
+ if (to_bits.is_nan())
+ return to;
----------------
nickdesaulniers wrote:
ah, thanks, slightly behind!
https://github.com/llvm/llvm-project/pull/72763
More information about the libc-commits
mailing list