[libc-commits] [libc] refactor fmin and fmax (PR #86718)

via libc-commits libc-commits at lists.llvm.org
Tue Mar 26 12:23:28 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libc

Author: Job Henandez Lara (Jobhdez)

<details>
<summary>Changes</summary>

Hello,

So, I worked on the fmaximum and fminimum functions recently and the reviewers suggested the structure:

```
if (bitsx ...)
  return ...;
if (bitsy ..)
  return 
...
return ...;
```
So I went ahead and did the same for fmin and fmax. I hope this isnt an issue for you all. thanks.

---
Full diff: https://github.com/llvm/llvm-project/pull/86718.diff


1 Files Affected:

- (modified) libc/src/__support/FPUtil/BasicOperations.h (+8-12) 


``````````diff
diff --git a/libc/src/__support/FPUtil/BasicOperations.h b/libc/src/__support/FPUtil/BasicOperations.h
index 405755f8b57d9b..917b5ebc22be26 100644
--- a/libc/src/__support/FPUtil/BasicOperations.h
+++ b/libc/src/__support/FPUtil/BasicOperations.h
@@ -30,36 +30,32 @@ template <typename T, cpp::enable_if_t<cpp::is_floating_point_v<T>, int> = 0>
 LIBC_INLINE T fmin(T x, T y) {
   const FPBits<T> bitx(x), bity(y);
 
-  if (bitx.is_nan()) {
+  if (bitx.is_nan()) 
     return y;
-  } else if (bity.is_nan()) {
+  if (bity.is_nan()) 
     return x;
-  } else if (bitx.sign() != bity.sign()) {
+  if (bitx.sign() != bity.sign()) 
     // To make sure that fmin(+0, -0) == -0 == fmin(-0, +0), whenever x and
     // y has different signs and both are not NaNs, we return the number
     // with negative sign.
     return (bitx.is_neg()) ? x : y;
-  } else {
-    return (x < y ? x : y);
-  }
+  return (x < y ? x : y);
 }
 
 template <typename T, cpp::enable_if_t<cpp::is_floating_point_v<T>, int> = 0>
 LIBC_INLINE T fmax(T x, T y) {
   FPBits<T> bitx(x), bity(y);
 
-  if (bitx.is_nan()) {
+  if (bitx.is_nan()) 
     return y;
-  } else if (bity.is_nan()) {
+  if (bity.is_nan()) 
     return x;
-  } else if (bitx.sign() != bity.sign()) {
+  if (bitx.sign() != bity.sign()) 
     // To make sure that fmax(+0, -0) == +0 == fmax(-0, +0), whenever x and
     // y has different signs and both are not NaNs, we return the number
     // with positive sign.
     return (bitx.is_neg() ? y : x);
-  } else {
-    return (x > y ? x : y);
-  }
+  return (x > y ? x : y);
 }
 
 template <typename T, cpp::enable_if_t<cpp::is_floating_point_v<T>, int> = 0>

``````````

</details>


https://github.com/llvm/llvm-project/pull/86718


More information about the libc-commits mailing list