diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-06-14 09:09:10 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-06-14 09:10:17 +0000 |
commit | f1735f0e42ef46ec6317e80281480aec6c2eb7e8 (patch) | |
tree | 19b3eb130dd8ef2a51734848de7918e7db183c1e /searchlib | |
parent | e0e3ff465fcec5bb6a7253da2cd6df82f9701066 (diff) |
handle NaN as a special case
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/expression/resultnodes.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/searchlib/src/vespa/searchlib/expression/resultnodes.cpp b/searchlib/src/vespa/searchlib/expression/resultnodes.cpp index 14dfb24d802..a8e73b925b0 100644 --- a/searchlib/src/vespa/searchlib/expression/resultnodes.cpp +++ b/searchlib/src/vespa/searchlib/expression/resultnodes.cpp @@ -60,7 +60,14 @@ ResultDeserializer & ResultNode::onDeserializeResult(ResultDeserializer & is) return is; } -int64_t FloatResultNode::onGetInteger(size_t index) const { (void) index; return static_cast<int64_t>(std::round(_value)); } +int64_t FloatResultNode::onGetInteger(size_t ) const { + if (std::isnan(_value)) { + return std::numeric_limits<int64_t>::min(); + } else { + return static_cast<int64_t>(std::round(_value)); + } +} + double FloatResultNode::onGetFloat(size_t index) const { (void) index; return _value; } void FloatResultNode::add(const ResultNode & b) { _value += b.getFloat(); } void FloatResultNode::negate() { _value = - _value; } |