diff --git a/poincare/src/absolute_value.cpp b/poincare/src/absolute_value.cpp index 16d243202..97356e023 100644 --- a/poincare/src/absolute_value.cpp +++ b/poincare/src/absolute_value.cpp @@ -22,6 +22,11 @@ Expression * AbsoluteValue::immediateSimplify() { if (operand(0)->sign() > 0) { return replaceWith(const_cast(operand(0)), true); } + if (operand(0)->sign() < 0) { + Expression * op = const_cast(operand(0)); + Expression * newOp = op->turnIntoPositive(); + return replaceWith(newOp, true); + } return this; } diff --git a/poincare/test/simplify_easy.cpp b/poincare/test/simplify_easy.cpp index 3d54d7220..259c1f7d6 100644 --- a/poincare/test/simplify_easy.cpp +++ b/poincare/test/simplify_easy.cpp @@ -110,6 +110,7 @@ QUIZ_CASE(poincare_simplify_easy) { assert_parsed_expression_simplify_to("R(x*144*P^2)", "12*P*R(x)"); assert_parsed_expression_simplify_to("R(x*144*P)", "12*R(xP)"); assert_parsed_expression_simplify_to("abs(P)", "P"); + assert_parsed_expression_simplify_to("abs(-P)", "P"); assert_parsed_expression_simplify_to("R(2)*R(3)", "R(6)"); assert_parsed_expression_simplify_to("2*2^P", "2*2^P"); assert_parsed_expression_simplify_to("A-A", "0");