diff --git a/poincare/include/poincare/evaluation.h b/poincare/include/poincare/evaluation.h index fce94bd05..59bdd0f07 100644 --- a/poincare/include/poincare/evaluation.h +++ b/poincare/include/poincare/evaluation.h @@ -41,8 +41,15 @@ using ComplexFunction = std::complex (*)(const std::complex&); template class Complex : public std::complex, public Evaluation { public: - Complex(T a, T b = -0.0) : std::complex(a, b) {} - Complex(std::complex c) : std::complex(c) {} + Complex(T a, T b = 0.0) : std::complex(a, b) {} + Complex(std::complex c) : std::complex(c) { + if (this->real() == -0) { + this->real(0); + } + if (this->imag() == -0) { + this->imag(0); + } + } static Complex Undefined() { return Complex(NAN, NAN); } diff --git a/poincare/src/evaluation.cpp b/poincare/src/evaluation.cpp index 37754eefc..a65477ddd 100644 --- a/poincare/src/evaluation.cpp +++ b/poincare/src/evaluation.cpp @@ -72,6 +72,12 @@ MatrixComplex::MatrixComplex(std::complex * operands, int numberOfRows, in m_operands = new std::complex [numberOfRows*numberOfColumns]; for (int i=0; i