[apps] In calculation, do not display exact output if it is identical to input

Change-Id: I4b0733c7e3090bc2b04c68661bd34cf0b6da17f1
This commit is contained in:
Émilie Feral
2017-11-21 14:56:44 +01:00
parent b2d6c2e305
commit 7c772d85b7

View File

@@ -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);
});