diff --git a/poincare/include/poincare/division.h b/poincare/include/poincare/division.h index d278a506d..95662dbe0 100644 --- a/poincare/include/poincare/division.h +++ b/poincare/include/poincare/division.h @@ -52,7 +52,7 @@ public: } // Simplification - virtual Expression shallowReduce(Context& context, Preferences::AngleUnit angleUnit, const Expression futureParent) override; + Expression shallowReduce(Context& context, Preferences::AngleUnit angleUnit, const Expression futureParent) override; private: template static Complex compute(const std::complex c, const std::complex d); diff --git a/poincare/src/division.cpp b/poincare/src/division.cpp index 204ae4eea..a4a5c553f 100644 --- a/poincare/src/division.cpp +++ b/poincare/src/division.cpp @@ -65,10 +65,11 @@ Expression Division::shallowReduce(Context& context, Preferences::AngleUnit angl if (result.isUndefinedOrAllocationFailure()) { return result; } + Multiplication m = Multiplication(childAtIndex(0)); Expression p = Power(childAtIndex(1), Rational(-1)); - p = p.shallowReduce(context, angleUnit); // Imagine Division(2,1). p would be 1^(-1) which can be simplified - Multiplication m = Multiplication(childAtIndex(0), p); - return m.shallowReduce(context, angleUnit); + p = p.shallowReduce(context, angleUnit, m); // Imagine Division(2,1). p would be 1^(-1) which can be simplified + m.addChildAtIndexInPlace(p, m.numberOfChildren(), m.numberOfChildren()); + return m.shallowReduce(context, angleUnit, futureParent); } }