diff --git a/poincare/include/poincare/trigonometry.h b/poincare/include/poincare/trigonometry.h index 86e49da2a..8c038e24e 100644 --- a/poincare/include/poincare/trigonometry.h +++ b/poincare/include/poincare/trigonometry.h @@ -16,6 +16,7 @@ public: static bool isDirectTrigonometryFunction(const Expression & e); static bool isInverseTrigonometryFunction(const Expression & e); static bool AreInverseFunctions(const Expression & directFunction, const Expression & inverseFunction); + static Expression UnitConversionFactor(Preferences::AngleUnit fromUnit, Preferences::AngleUnit toUnit); static bool ExpressionIsEquivalentToTangent(const Expression & e); static Expression shallowReduceDirectFunction(Expression & e, ExpressionNode::ReductionContext reductionContext); static Expression shallowReduceInverseFunction(Expression & e, ExpressionNode::ReductionContext reductionContext); diff --git a/poincare/src/trigonometry.cpp b/poincare/src/trigonometry.cpp index 51ccdce30..a9c849c33 100644 --- a/poincare/src/trigonometry.cpp +++ b/poincare/src/trigonometry.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -87,6 +88,13 @@ bool Trigonometry::AreInverseFunctions(const Expression & directFunction, const return inverseFunction.type() == correspondingType; } +Expression Trigonometry::UnitConversionFactor(Preferences::AngleUnit fromUnit, Preferences::AngleUnit toUnit) { + if (fromUnit == toUnit) { + return Rational::Builder(1); + } + return Division::Builder(piExpression(toUnit), piExpression(fromUnit)); +} + bool Trigonometry::ExpressionIsEquivalentToTangent(const Expression & e) { // We look for (cos^-1 * sin) assert(ExpressionNode::Type::Power < ExpressionNode::Type::Sine);