aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Niels Dekker <N.Dekker@lumc.nl>2020-09-10 16:22:28 +0200
committerGravatar Niels Dekker <N.Dekker@lumc.nl>2020-09-10 16:22:28 +0200
commit5328c9be4356cc3d7ab2e359acb1e9ebeeeea631 (patch)
tree6ab5ac22d6333cc00d13eb76092f3b3c22bb1ad7
parent35d149e34caabc8ca77ef908d6024f32d84b7ff4 (diff)
Fix half_impl::float_to_half_rtne(float) warning: '<<' causes overflow
Fixed Visual Studio 2019 Code Analysis (C++ Core Guidelines) warning C26450 from inside `half_impl::float_to_half_rtne(float)`: > Arithmetic overflow: '<<' operation causes overflow at compile time.
-rw-r--r--Eigen/src/Core/arch/Default/Half.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/Eigen/src/Core/arch/Default/Half.h b/Eigen/src/Core/arch/Default/Half.h
index bbc15d463..60f19749b 100644
--- a/Eigen/src/Core/arch/Default/Half.h
+++ b/Eigen/src/Core/arch/Default/Half.h
@@ -472,7 +472,9 @@ EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC __half_raw float_to_half_rtne(float ff) {
unsigned int mant_odd = (f.u >> 13) & 1; // resulting mantissa is odd
// update exponent, rounding bias part 1
- f.u += ((unsigned int)(15 - 127) << 23) + 0xfff;
+ // Equivalent to `f.u += ((unsigned int)(15 - 127) << 23) + 0xfff`, but
+ // without arithmetic overflow.
+ f.u += 0xc8000fffU;
// rounding bias part 2
f.u += mant_odd;
// take the bits!