diff --git a/apps/calculation/calculation.cpp b/apps/calculation/calculation.cpp index 53f7ac877..cfd7854ff 100644 --- a/apps/calculation/calculation.cpp +++ b/apps/calculation/calculation.cpp @@ -192,4 +192,14 @@ bool Calculation::shouldDisplayApproximateOutput(Context * context) { return input()->isApproximate(*context); } +bool Calculation::exactAndApproximateOutputsAreEqual(Poincare::Context * context) { + if (exactOutput(context)->type() != Expression::Type::Rational) { + return false; + } + Expression * approximateOutput = Expression::ParseAndSimplify(m_approximateOutputText, *context); + bool isEqual = approximateOutput->isIdenticalTo(exactOutput(context)); + delete approximateOutput; + return isEqual; +} + } diff --git a/apps/calculation/calculation.h b/apps/calculation/calculation.h index e926241b3..ce28f55d3 100644 --- a/apps/calculation/calculation.h +++ b/apps/calculation/calculation.h @@ -31,6 +31,7 @@ public: bool isEmpty(); void tidy(); bool shouldDisplayApproximateOutput(Poincare::Context * context); + bool exactAndApproximateOutputsAreEqual(Poincare::Context * context); constexpr static int k_printedExpressionSize = 2*::TextField::maxBufferSize(); private: /* Buffers holding text expressions have to be longer than the text written