From ec7382c75e04d75298cdb069ee2ef699ae42537e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Fri, 24 Apr 2020 10:56:27 +0200 Subject: [PATCH] [poincare] Unit::chooseBestMultipleForValue handles edge cases (inf, 1, 0) cases itself --- poincare/src/multiplication.cpp | 2 +- poincare/src/unit.cpp | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/poincare/src/multiplication.cpp b/poincare/src/multiplication.cpp index c61ac9ae1..aa831a2d2 100644 --- a/poincare/src/multiplication.cpp +++ b/poincare/src/multiplication.cpp @@ -440,7 +440,7 @@ Expression Multiplication::shallowBeautify(ExpressionNode::ReductionContext redu result = Undefined::Builder(); } else { // Find the right unit prefix when the value ≠ 0 - if (unitConversionMode == ExpressionNode::UnitConversion::Default && value != 0.0 && value != 1.0 && !std::isinf(value)) { + if (unitConversionMode == ExpressionNode::UnitConversion::Default) { // Identify the first Unit factor and its exponent Expression firstFactor = units; int exponent = 1; diff --git a/poincare/src/unit.cpp b/poincare/src/unit.cpp index f19004a1a..4d1daadf1 100644 --- a/poincare/src/unit.cpp +++ b/poincare/src/unit.cpp @@ -319,7 +319,10 @@ Expression Unit::shallowReduce(ExpressionNode::ReductionContext reductionContext } void Unit::chooseBestMultipleForValue(double & value, const int exponent, ExpressionNode::ReductionContext reductionContext) { - assert(value != 0 && !std::isnan(value) && !std::isinf(value) && exponent != 0); + assert(!std::isnan(value) && exponent != 0); + if (value == 0 || value == 1.0 || std::isinf(value)) { + return; + } UnitNode * unitNode = node(); const Dimension * dim = unitNode->dimension(); /* Find in the Dimension 'dim' which unit (Representative and Prefix) make