From 2f6770cd69f1b727812864bbc80fe4d047659c9f Mon Sep 17 00:00:00 2001 From: Ruben Dashyan Date: Wed, 19 Feb 2020 14:05:51 +0100 Subject: [PATCH] [poincare/multiplication] Change signature of ExponentsOfBaseUnits --- poincare/src/multiplication.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/poincare/src/multiplication.cpp b/poincare/src/multiplication.cpp index 656544c9a..526a5c86e 100644 --- a/poincare/src/multiplication.cpp +++ b/poincare/src/multiplication.cpp @@ -314,7 +314,8 @@ static void ExponentsMetrics(const Unit::Dimension::Vector &exponents, } } -static void ExponentsOfBaseUnits(const Expression units, Unit::Dimension::Vector &exponents) { +static Unit::Dimension::Vector ExponentsOfBaseUnits(const Expression units) { + Unit::Dimension::Vector exponents; // Make sure the provided Expression is a Multiplication Expression u = units; if (u.type() == ExpressionNode::Type::Unit || u.type() == ExpressionNode::Type::Power) { @@ -343,6 +344,7 @@ static void ExponentsOfBaseUnits(const Expression units, Unit::Dimension::Vector assert(0 <= indexInTable && indexInTable < Unit::NumberOfBaseUnits); exponents.setCoefficientAtIndex(indexInTable, exponent); } + return exponents; } static bool CanSimplifyUnitProduct( @@ -404,8 +406,7 @@ Expression Multiplication::shallowBeautify(ExpressionNode::ReductionContext redu * - Repeat those steps until no more simplification is possible. */ Multiplication unitsAccu = Multiplication::Builder(); - Unit::Dimension::Vector unitsExponents; - ExponentsOfBaseUnits(units, unitsExponents); + Unit::Dimension::Vector unitsExponents = ExponentsOfBaseUnits(units); size_t unitsSupportSize = 0; Integer unitsNorm(0); ExponentsMetrics(unitsExponents, unitsSupportSize, unitsNorm); @@ -417,10 +418,9 @@ Expression Multiplication::shallowBeautify(ExpressionNode::ReductionContext redu Integer bestRemainderNorm = unitsNorm; for (const Unit::Dimension * dim = Unit::DimensionTable + Unit::NumberOfBaseUnits; dim < Unit::DimensionTableUpperBound; dim++) { Unit entryUnit = Unit::Builder(dim, dim->stdRepresentative(), dim->stdRepresentativePrefix()); - Unit::Dimension::Vector entryUnitExponents; + Unit::Dimension::Vector entryUnitExponents = ExponentsOfBaseUnits(entryUnit.clone().shallowReduce(reductionContext)); Integer entryUnitNorm(0); size_t entryUnitSupportSize = 0; - ExponentsOfBaseUnits(entryUnit.clone().shallowReduce(reductionContext), entryUnitExponents); ExponentsMetrics(entryUnitExponents, entryUnitSupportSize, entryUnitNorm); CanSimplifyUnitProduct( unitsExponents, entryUnitExponents, entryUnitNorm, entryUnit,