diff options
author | Eric Kunze <eric.kunze@arm.com> | 2023-01-25 10:05:51 -0800 |
---|---|---|
committer | Eric Kunze <eric.kunze@arm.com> | 2023-03-03 00:32:08 +0000 |
commit | 57bc0796cd85115684219cf373db04c172848306 (patch) | |
tree | e34371339286038ba4aa335cff93bb0d56e53c19 | |
parent | a56e13739547da40b117483af3f598c97e3e2a0c (diff) | |
download | reference_model-57bc0796cd85115684219cf373db04c172848306.tar.gz |
Update CAST fp to int rounding
Use rint() instead of round() to get round to nearest even behavior
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I45957be0e863de2207850b023626a7c0ea11e5eb
-rw-r--r-- | reference_model/src/ops/type_conversion.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/reference_model/src/ops/type_conversion.cc b/reference_model/src/ops/type_conversion.cc index dbedbad..a3140c3 100644 --- a/reference_model/src/ops/type_conversion.cc +++ b/reference_model/src/ops/type_conversion.cc @@ -350,7 +350,7 @@ CastHelper<DType_FP16, OutDtype>::CastHelper() fcn = [](float in) -> OutEigenType { // Cast from float representation back to half_float before rounding half_float::half h = half_float::half(in); - h = std::round(h); + h = std::rint(h); OutEigenType out = half_float::half_cast<OutEigenType, half_float::half>(h); out = std::max<OutEigenType>(out, OutMin); out = std::min<OutEigenType>(out, OutMax); @@ -401,7 +401,7 @@ CastHelper<DType_FP32, OutDtype>::CastHelper() { // fp32 data converted to integer fcn = [](float in) -> OutEigenType { - OutEigenType out = std::round(in); + OutEigenType out = std::rint(in); out = std::max<OutEigenType>(out, OutMin); out = std::min<OutEigenType>(out, OutMax); return out; |