[flang-commits] [flang] 9f9e9d9 - [flang] SET_EXPONENT(-0.0) should return -0.0
Peter Steinfeld via flang-commits
flang-commits at lists.llvm.org
Thu Jul 7 12:44:16 PDT 2022
Author: Peter Steinfeld
Date: 2022-07-07T12:43:30-07:00
New Revision: 9f9e9d9cfc2e2f929c17de4a1065c0eb68e479c0
URL: https://github.com/llvm/llvm-project/commit/9f9e9d9cfc2e2f929c17de4a1065c0eb68e479c0
DIFF: https://github.com/llvm/llvm-project/commit/9f9e9d9cfc2e2f929c17de4a1065c0eb68e479c0.diff
LOG: [flang] SET_EXPONENT(-0.0) should return -0.0
Section 16.9.171 says:
If X has the value zero, the result has the same value as X
So if X is -0.0, SET_EXPONENT should return -0.0.
Differential Revision: https://reviews.llvm.org/D129309
Added:
Modified:
flang/runtime/numeric.cpp
Removed:
################################################################################
diff --git a/flang/runtime/numeric.cpp b/flang/runtime/numeric.cpp
index 8d0297317b4df..a989d3a43a4d0 100644
--- a/flang/runtime/numeric.cpp
+++ b/flang/runtime/numeric.cpp
@@ -122,7 +122,7 @@ template <typename T> inline T SetExponent(T x, std::int64_t p) {
} else if (std::isinf(x)) {
return std::numeric_limits<T>::quiet_NaN(); // +/-Inf -> NaN
} else if (x == 0) {
- return 0; // 0 -> 0
+ return x; // return negative zero if x is negative zero
} else {
int expo{std::ilogb(x) + 1};
auto ip{static_cast<int>(p - expo)};
More information about the flang-commits
mailing list