diff --git a/poincare/include/poincare/decimal.h b/poincare/include/poincare/decimal.h index 204937875..5b37b3e6d 100644 --- a/poincare/include/poincare/decimal.h +++ b/poincare/include/poincare/decimal.h @@ -101,7 +101,7 @@ private: constexpr static int k_maxMantissaLength = 20; DecimalNode * node() const { return static_cast(Number::node()); } Decimal(size_t size, const Integer & m, int e); - Expression setSign(ExpressionNode::Sign s, Context * context, Preferences::AngleUnit angleUnit); + Expression setSign(ExpressionNode::Sign s); // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit); Expression shallowBeautify(Context & context, Preferences::AngleUnit angleUnit); diff --git a/poincare/include/poincare/number.h b/poincare/include/poincare/number.h index dde67d910..1d6e542fd 100644 --- a/poincare/include/poincare/number.h +++ b/poincare/include/poincare/number.h @@ -46,7 +46,9 @@ public: static Number Power(const Number & i, const Number & j); static int NaturalOrder(const Number & i, const Number & j); - Number setSign(ExpressionNode::Sign s, Context * context, Preferences::AngleUnit angleUnit) { return Expression::setSign(s, context, angleUnit).convert(); } + /* Number::setSign does not need a context or an angle unit (a number can be + * Infinity, Undefined, Float, Decimal, Rational). */ + Number setSign(ExpressionNode::Sign s) { return Expression::setSign(s, nullptr, Preferences::AngleUnit::Degree).convert(); } protected: Number() : Expression() {} NumberNode * node() const { return static_cast(Expression::node()); } diff --git a/poincare/src/decimal.cpp b/poincare/src/decimal.cpp index 1ab59a71b..736588d7d 100644 --- a/poincare/src/decimal.cpp +++ b/poincare/src/decimal.cpp @@ -57,7 +57,7 @@ size_t DecimalNode::size() const { } Expression DecimalNode::setSign(Sign s, Context * context, Preferences::AngleUnit angleUnit) { - return Decimal(this).setSign(s, context, angleUnit); + return Decimal(this).setSign(s); } int DecimalNode::simplificationOrderSameType(const ExpressionNode * e, bool canBeInterrupted) const { @@ -336,7 +336,7 @@ Decimal::Decimal(size_t size, const Integer & m, int e) : Number(TreePool::share node()->setValue(m.digits(), m.numberOfDigits(), e, m.isNegative()); } -Expression Decimal::setSign(ExpressionNode::Sign s, Context * context, Preferences::AngleUnit angleUnit) { +Expression Decimal::setSign(ExpressionNode::Sign s) { Decimal result = *this; result.node()->setNegative(s == ExpressionNode::Sign::Negative); return result; @@ -372,7 +372,7 @@ Expression Decimal::shallowReduce(Context & context, Preferences::AngleUnit angl Expression Decimal::shallowBeautify(Context & context, Preferences::AngleUnit angleUnit) { if (sign() == ExpressionNode::Sign::Negative) { - Expression abs = setSign(ExpressionNode::Sign::Positive, &context, angleUnit); + Expression abs = setSign(ExpressionNode::Sign::Positive); Opposite o; replaceWithInPlace(o); o.replaceChildAtIndexInPlace(0, abs); diff --git a/poincare/src/multiplication.cpp b/poincare/src/multiplication.cpp index 31230994f..70fc45dc1 100644 --- a/poincare/src/multiplication.cpp +++ b/poincare/src/multiplication.cpp @@ -664,8 +664,8 @@ void Multiplication::factorizeSineAndCosine(int i, int j, Context & context, Pre return; } Number sumPQ = Number::Addition(p, q); - Number absP = p.clone().convert().setSign(ExpressionNode::Sign::Positive, &context, angleUnit); - Number absQ = q.clone().convert().setSign(ExpressionNode::Sign::Positive, &context, angleUnit); + Number absP = p.clone().convert().setSign(ExpressionNode::Sign::Positive); + Number absQ = q.clone().convert().setSign(ExpressionNode::Sign::Positive); Expression tan = Tangent::Builder(x.clone()); if (Number::NaturalOrder(absP, absQ) < 0) { // Replace sin(x) by tan(x) or sin(x)^p by tan(x)^p