aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Kunze <eric.kunze@arm.com>2023-01-25 10:05:51 -0800
committerEric Kunze <eric.kunze@arm.com>2023-03-03 00:32:08 +0000
commit57bc0796cd85115684219cf373db04c172848306 (patch)
treee34371339286038ba4aa335cff93bb0d56e53c19
parenta56e13739547da40b117483af3f598c97e3e2a0c (diff)
downloadreference_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.cc4
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;