diff options
-rw-r--r-- | arm_compute/core/Utils.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arm_compute/core/Utils.h b/arm_compute/core/Utils.h index b24955d778..a279ef310a 100644 --- a/arm_compute/core/Utils.h +++ b/arm_compute/core/Utils.h @@ -1156,13 +1156,15 @@ bool check_value_range(T val, DataType dt, QuantizationInfo qinfo = Quantization } case DataType::U32: { + const auto val_d64 = static_cast<double>(val); const auto val_u32 = static_cast<uint32_t>(val); - return ((val_u32 == val) && val >= std::numeric_limits<uint32_t>::lowest() && val <= std::numeric_limits<uint32_t>::max()); + return ((val_u32 == val_d64) && val_d64 >= std::numeric_limits<uint32_t>::lowest() && val_d64 <= std::numeric_limits<uint32_t>::max()); } case DataType::S32: { + const auto val_d64 = static_cast<double>(val); const auto val_s32 = static_cast<int32_t>(val); - return ((val_s32 == val) && val >= std::numeric_limits<int32_t>::lowest() && val <= std::numeric_limits<int32_t>::max()); + return ((val_s32 == val_d64) && val_d64 >= std::numeric_limits<int32_t>::lowest() && val_d64 <= std::numeric_limits<int32_t>::max()); } case DataType::BFLOAT16: return (val >= bfloat16::lowest() && val <= bfloat16::max()); |