diff --git a/apps/calculation/calculation.cpp b/apps/calculation/calculation.cpp index 22e0daca1..7ee491522 100644 --- a/apps/calculation/calculation.cpp +++ b/apps/calculation/calculation.cpp @@ -65,7 +65,8 @@ void Calculation::reset() { void Calculation::setContent(const char * c, Context * context) { reset(); - strlcpy(m_inputText, c, sizeof(m_inputText)); + m_input = Expression::parse(c); + m_input->writeTextInBuffer(m_inputText, sizeof(m_inputText)); m_exactOutput = input()->clone(); Expression::Simplify(&m_exactOutput, *context); m_exactOutput->writeTextInBuffer(m_exactOutputText, sizeof(m_exactOutputText)); @@ -208,6 +209,9 @@ bool Calculation::shouldApproximateOutput() { if (strcmp(m_exactOutputText, m_approximateOutputText) == 0) { return true; } + if (strcmp(m_exactOutputText, m_inputText) == 0) { + return true; + } return input()->recursivelyMatches([](const Expression * e) { return e->type() == Expression::Type::Decimal || Expression::IsMatrix(e); });