diff --git a/apps/calculation/additional_outputs/second_degree_list_controller.cpp b/apps/calculation/additional_outputs/second_degree_list_controller.cpp index 8e2b804e7..13866e430 100644 --- a/apps/calculation/additional_outputs/second_degree_list_controller.cpp +++ b/apps/calculation/additional_outputs/second_degree_list_controller.cpp @@ -169,10 +169,16 @@ void SecondDegreeListController::setExpression(Poincare::Expression e) { Expression x0Opposite = getOppositeIfExists(x0, &reductionContext); if (x0Opposite.isUninitialized()) { PoincareHelpers::Simplify(&x0, context, ExpressionNode::ReductionTarget::User); + if (x0.type() == ExpressionNode::Type::Addition || x0.type() == ExpressionNode::Type::Subtraction) { + x0 = Parenthesis::Builder(x0.clone()); + } firstFactor = Subtraction::Builder(Symbol::Builder("x", strlen("x")), x0); } else { PoincareHelpers::Simplify(&x0Opposite, context, ExpressionNode::ReductionTarget::User); + if (x0Opposite.type() == ExpressionNode::Type::Addition || x0Opposite.type() == ExpressionNode::Type::Subtraction) { + x0Opposite = Parenthesis::Builder(x0Opposite.clone()); + } firstFactor = Addition::Builder(Symbol::Builder("x", strlen("x")), x0Opposite); } if (x0.type() == ExpressionNode::Type::Opposite) { @@ -182,10 +188,16 @@ void SecondDegreeListController::setExpression(Poincare::Expression e) { Expression x1Opposite = getOppositeIfExists(x1, &reductionContext); if (x1Opposite.isUninitialized()) { PoincareHelpers::Simplify(&x1, context, ExpressionNode::ReductionTarget::User); + if (x1.type() == ExpressionNode::Type::Addition || x1.type() == ExpressionNode::Type::Subtraction) { + x1 = Parenthesis::Builder(x1.clone()); + } secondFactor = Subtraction::Builder(Symbol::Builder("x", strlen("x")), x1); } else { PoincareHelpers::Simplify(&x1Opposite, context, ExpressionNode::ReductionTarget::User); + if (x1Opposite.type() == ExpressionNode::Type::Addition || x1Opposite.type() == ExpressionNode::Type::Subtraction) { + x1Opposite = Parenthesis::Builder(x1Opposite.clone()); + } secondFactor = Addition::Builder(Symbol::Builder("x", strlen("x")), x1Opposite); }