From 8a00aa16cca5a735396c4ec22f095fdfa82d5802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Mon, 17 Dec 2018 11:38:53 +0100 Subject: [PATCH] [poincare] Clean: remove complexCartesian and complexPolar methods --- poincare/Makefile | 1 - poincare/include/poincare/absolute_value.h | 2 - poincare/include/poincare/addition.h | 3 - poincare/include/poincare/arc_tangent.h | 2 - .../include/poincare/binomial_coefficient.h | 2 - poincare/include/poincare/ceiling.h | 2 - poincare/include/poincare/complex_argument.h | 2 - poincare/include/poincare/complex_helper.h | 24 ---- poincare/include/poincare/complex_polar.h | 47 ------- .../include/poincare/confidence_interval.h | 4 - poincare/include/poincare/conjugate.h | 2 - poincare/include/poincare/constant.h | 1 - poincare/include/poincare/cosine.h | 2 - poincare/include/poincare/decimal.h | 1 - poincare/include/poincare/derivative.h | 2 - poincare/include/poincare/division.h | 8 -- poincare/include/poincare/division_quotient.h | 2 - .../include/poincare/division_remainder.h | 2 - poincare/include/poincare/expression.h | 3 - poincare/include/poincare/expression_node.h | 2 - poincare/include/poincare/factorial.h | 2 - poincare/include/poincare/floor.h | 2 - poincare/include/poincare/frac_part.h | 2 - poincare/include/poincare/function.h | 2 - .../include/poincare/great_common_divisor.h | 2 - poincare/include/poincare/imaginary_part.h | 2 - poincare/include/poincare/integral.h | 2 - .../include/poincare/least_common_multiple.h | 2 - poincare/include/poincare/matrix_dimension.h | 4 - poincare/include/poincare/multiplication.h | 9 -- poincare/include/poincare/nth_root.h | 5 - poincare/include/poincare/number.h | 2 - poincare/include/poincare/opposite.h | 4 - poincare/include/poincare/parenthesis.h | 5 - .../include/poincare/permute_coefficient.h | 3 - poincare/include/poincare/power.h | 2 - .../include/poincare/prediction_interval.h | 4 - poincare/include/poincare/randint.h | 2 - poincare/include/poincare/random.h | 2 - poincare/include/poincare/real_part.h | 2 - poincare/include/poincare/round.h | 2 - poincare/include/poincare/sign_function.h | 2 - poincare/include/poincare/sine.h | 2 - poincare/include/poincare/square_root.h | 10 -- poincare/include/poincare/subtraction.h | 3 - poincare/include/poincare/symbol.h | 2 - poincare/include/poincare/symbol_abstract.h | 2 - poincare/include/poincare/tangent.h | 2 - poincare/include/poincare/undefined.h | 2 +- poincare/src/absolute_value.cpp | 1 + poincare/src/addition.cpp | 25 +--- poincare/src/complex_argument.cpp | 1 + poincare/src/complex_helper.cpp | 132 ------------------ poincare/src/conjugate.cpp | 23 --- poincare/src/constant.cpp | 8 +- poincare/src/division.cpp | 41 ------ poincare/src/expression.cpp | 20 --- poincare/src/expression_node.cpp | 10 -- poincare/src/function.cpp | 10 -- poincare/src/imaginary_part.cpp | 1 + poincare/src/multiplication.cpp | 61 -------- poincare/src/nth_root.cpp | 41 ------ poincare/src/opposite.cpp | 22 --- poincare/src/power.cpp | 44 ------ poincare/src/real_part.cpp | 1 + poincare/src/sign_function.cpp | 1 + poincare/src/square_root.cpp | 51 ------- poincare/src/subtraction.cpp | 13 -- poincare/src/symbol.cpp | 10 -- poincare/src/symbol_abstract.cpp | 18 --- poincare/src/tree_pool.cpp | 1 - 71 files changed, 8 insertions(+), 728 deletions(-) delete mode 100644 poincare/include/poincare/complex_helper.h delete mode 100644 poincare/include/poincare/complex_polar.h delete mode 100644 poincare/src/complex_helper.cpp diff --git a/poincare/Makefile b/poincare/Makefile index 17fede897..816a3a53f 100644 --- a/poincare/Makefile +++ b/poincare/Makefile @@ -50,7 +50,6 @@ objs += $(addprefix poincare/src/,\ complex.o\ complex_argument.o\ complex_cartesian.o\ - complex_helper.o\ confidence_interval.o\ conjugate.o\ constant.o\ diff --git a/poincare/include/poincare/absolute_value.h b/poincare/include/poincare/absolute_value.h index 7e33f4660..973f8df7a 100644 --- a/poincare/include/poincare/absolute_value.h +++ b/poincare/include/poincare/absolute_value.h @@ -4,7 +4,6 @@ #include #include #include -#include namespace Poincare { @@ -25,7 +24,6 @@ public: Expression setSign(Sign s, Context * context, Preferences::AngleUnit angleUnit) override; // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } // Approximation diff --git a/poincare/include/poincare/addition.h b/poincare/include/poincare/addition.h index 51004ba94..ca822b7a5 100644 --- a/poincare/include/poincare/addition.h +++ b/poincare/include/poincare/addition.h @@ -27,9 +27,6 @@ public: int polynomialDegree(Context & context, const char * symbolName) const override; int getPolynomialCoefficients(Context & context, const char * symbolName, Expression coefficients[]) const override; - // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override; - // Evaluation template static Complex compute(const std::complex c, const std::complex d) { return Complex(c+d); } template static MatrixComplex computeOnMatrices(const MatrixComplex m, const MatrixComplex n) { diff --git a/poincare/include/poincare/arc_tangent.h b/poincare/include/poincare/arc_tangent.h index 5175dc1c0..f581c2e0e 100644 --- a/poincare/include/poincare/arc_tangent.h +++ b/poincare/include/poincare/arc_tangent.h @@ -2,7 +2,6 @@ #define POINCARE_ARC_TANGENT_H #include -#include #include #include @@ -24,7 +23,6 @@ public: Type type() const override { return Type::ArcTangent; } // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianComplexFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return childAtIndex(0)->isReal(context, angleUnit); } private: diff --git a/poincare/include/poincare/binomial_coefficient.h b/poincare/include/poincare/binomial_coefficient.h index da1c17ecd..9dcebba2c 100644 --- a/poincare/include/poincare/binomial_coefficient.h +++ b/poincare/include/poincare/binomial_coefficient.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -20,7 +19,6 @@ public: #endif // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } // Properties diff --git a/poincare/include/poincare/ceiling.h b/poincare/include/poincare/ceiling.h index 91da42199..9d1bb78f5 100644 --- a/poincare/include/poincare/ceiling.h +++ b/poincare/include/poincare/ceiling.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -20,7 +19,6 @@ public: #endif // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } // Properties diff --git a/poincare/include/poincare/complex_argument.h b/poincare/include/poincare/complex_argument.h index 891bd222b..fa751d591 100644 --- a/poincare/include/poincare/complex_argument.h +++ b/poincare/include/poincare/complex_argument.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -19,7 +18,6 @@ public: } #endif // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } // Properties diff --git a/poincare/include/poincare/complex_helper.h b/poincare/include/poincare/complex_helper.h deleted file mode 100644 index 78553d079..000000000 --- a/poincare/include/poincare/complex_helper.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef POINCARE_COMPLEX_HELPER_H -#define POINCARE_COMPLEX_HELPER_H - -#include -#include -#include - -namespace Poincare { - -class ComplexHelper { -public: - static ComplexCartesian complexCartesianComplexFunction(const ExpressionNode * e, Context & context, Preferences::AngleUnit angleUnit); - static ComplexCartesian complexCartesianRealFunction(const ExpressionNode * e, Context & context, Preferences::AngleUnit angleUnit); - // static Expression realPartMatrix(const Expression e, Context & context, Preferences::AngleUnit angleUnit); - static ComplexCartesian complexCartesianFromComplexPolar(const ExpressionNode * node, Context & context, Preferences::AngleUnit angleUnit); - static ComplexPolar complexPolarFromComplexCartesian(const ExpressionNode * node, Context & context, Preferences::AngleUnit angleUnit); - static Expression complexSquareNormComplexCartesian(Expression real, Expression imag, Context & context, Preferences::AngleUnit angleUnit); -private: - static Expression complexCartesianFromComplexPolarHelper(Expression norm, Expression trigo, Context & context, Preferences::AngleUnit angleUnit); -}; - -} - -#endif diff --git a/poincare/include/poincare/complex_polar.h b/poincare/include/poincare/complex_polar.h deleted file mode 100644 index ff947ccf9..000000000 --- a/poincare/include/poincare/complex_polar.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef POINCARE_COMPLEX_POLAR_H -#define POINCARE_COMPLEX_POLAR_H - -#include -#include - -namespace Poincare { - -class ComplexPolarNode : public ExpressionNode { -public: - - // TreeNode - size_t size() const override { return sizeof(ComplexPolarNode); } - int numberOfChildren() const override { return 2; } -#if POINCARE_TREE_LOG - virtual void logNodeName(std::ostream & stream) const override { - stream << "ComplexPolar"; - } -#endif - - // Properties - Type type() const override { return Type::ComplexPolar; } -private: - // Layout - Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { assert(false); return Layout(); } - // Evaluation - Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { assert(false); return Evaluation(); } - Evaluation approximate(DoublePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { assert(false); return Evaluation(); } -}; - -class ComplexPolar final : public Expression { -public: - ComplexPolar() : Expression() {} - static ComplexPolar Builder(Expression child0, Expression child1) { return ComplexPolar(child0, child1); } - Expression norm() { return childAtIndex(0); } - Expression arg() { return childAtIndex(1); } -private: - ComplexPolar(Expression child0, Expression child1) : Expression(TreePool::sharedPool()->createTreeNode()) { - replaceChildAtIndexInPlace(0, child0); - replaceChildAtIndexInPlace(1, child1); - } -}; - - -} - -#endif diff --git a/poincare/include/poincare/confidence_interval.h b/poincare/include/poincare/confidence_interval.h index 48a829d9c..78c526f68 100644 --- a/poincare/include/poincare/confidence_interval.h +++ b/poincare/include/poincare/confidence_interval.h @@ -2,7 +2,6 @@ #define POINCARE_CONFIDENCE_INTERVAL_H #include -#include namespace Poincare { @@ -20,9 +19,6 @@ public: // ExpressionNode - // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } - // Properties Type type() const override { return Type::ConfidenceInterval; } int polynomialDegree(Context & context, const char * symbolName) const override { return -1; } diff --git a/poincare/include/poincare/conjugate.h b/poincare/include/poincare/conjugate.h index 7c36ee9cc..141e897fd 100644 --- a/poincare/include/poincare/conjugate.h +++ b/poincare/include/poincare/conjugate.h @@ -19,8 +19,6 @@ public: #endif bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return childAtIndex(0)->isReal(context, angleUnit); } - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override; - ComplexPolar complexPolar(Context & context, Preferences::AngleUnit angleUnit) const override; // Properties Type type() const override { return Type::Conjugate; } diff --git a/poincare/include/poincare/constant.h b/poincare/include/poincare/constant.h index 7d7f28110..ef3a385c7 100644 --- a/poincare/include/poincare/constant.h +++ b/poincare/include/poincare/constant.h @@ -19,7 +19,6 @@ public: // Complex bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override; - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override; // Expression Properties Type type() const override { return Type::Constant; } diff --git a/poincare/include/poincare/cosine.h b/poincare/include/poincare/cosine.h index 5da48dacc..7fd552ccb 100644 --- a/poincare/include/poincare/cosine.h +++ b/poincare/include/poincare/cosine.h @@ -2,7 +2,6 @@ #define POINCARE_COSINE_H #include -#include #include #include @@ -21,7 +20,6 @@ public: #endif // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianComplexFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return childAtIndex(0)->isReal(context, angleUnit); } // Properties diff --git a/poincare/include/poincare/decimal.h b/poincare/include/poincare/decimal.h index e3da48d30..7f6c1ea78 100644 --- a/poincare/include/poincare/decimal.h +++ b/poincare/include/poincare/decimal.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { diff --git a/poincare/include/poincare/derivative.h b/poincare/include/poincare/derivative.h index 44c01b74f..afda48893 100644 --- a/poincare/include/poincare/derivative.h +++ b/poincare/include/poincare/derivative.h @@ -2,7 +2,6 @@ #define POINCARE_DERIVATIVE_H #include -#include #include #include @@ -21,7 +20,6 @@ public: #endif // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } // Properties diff --git a/poincare/include/poincare/division.h b/poincare/include/poincare/division.h index 7533bd53c..728f514aa 100644 --- a/poincare/include/poincare/division.h +++ b/poincare/include/poincare/division.h @@ -22,14 +22,6 @@ public: } #endif - /* Property */ - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override; - /* If we use the formula arg(a/b) = arg(a)-arg(b), we are likely to end up - * with subtractions of arcTangent. To avoid that, we compute the argument(a/b) - * from the real and imaginary part of a/b. - * TODO: What about norm(a/b)? */ - //ComplexPolar complexPolar(Context & context, Preferences::AngleUnit angleUnit) const override; - // Properties Type type() const override { return Type::Division; } int polynomialDegree(Context & context, const char * symbolName) const override; diff --git a/poincare/include/poincare/division_quotient.h b/poincare/include/poincare/division_quotient.h index 43f1ea673..36c3a002d 100644 --- a/poincare/include/poincare/division_quotient.h +++ b/poincare/include/poincare/division_quotient.h @@ -2,7 +2,6 @@ #define POINCARE_DIVISION_QUOTIENT_H #include -#include namespace Poincare { @@ -22,7 +21,6 @@ public: Type type() const override { return Type::DivisionQuotient; } // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/division_remainder.h b/poincare/include/poincare/division_remainder.h index ad6e98f88..c0a4ca2ab 100644 --- a/poincare/include/poincare/division_remainder.h +++ b/poincare/include/poincare/division_remainder.h @@ -2,7 +2,6 @@ #define POINCARE_DIVISION_REMAINDER_H #include -#include #include namespace Poincare { @@ -23,7 +22,6 @@ public: Type type() const override { return Type::DivisionRemainder; } // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/expression.h b/poincare/include/poincare/expression.h index 3ff918930..ca25dfdc6 100644 --- a/poincare/include/poincare/expression.h +++ b/poincare/include/poincare/expression.h @@ -168,9 +168,6 @@ public: /* Complex */ bool isReal(Context & context, Preferences::AngleUnit angleUnit) const { return node()->isReal(context, angleUnit); } - bool isPureReal(Context & context, Preferences::AngleUnit angleUnit) const; - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const; - ComplexPolar complexPolar(Context & context, Preferences::AngleUnit angleUnit) const; /* Comparison */ /* isIdenticalTo is the "easy" equality, it returns true if both trees have diff --git a/poincare/include/poincare/expression_node.h b/poincare/include/poincare/expression_node.h index 409d1e1d7..7e43e0f47 100644 --- a/poincare/include/poincare/expression_node.h +++ b/poincare/include/poincare/expression_node.h @@ -130,8 +130,6 @@ public: * scan of the tree in ParseAndSimplifyForComplexFormat instead of Simplifying * and then extracting ComplexCartesian. */ virtual bool isReal(Context & context, Preferences::AngleUnit angleUnit) const { return false; } - virtual ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const; - virtual ComplexPolar complexPolar(Context & context, Preferences::AngleUnit angleUnit) const; /* Simplification */ /* SimplificationOrder returns: diff --git a/poincare/include/poincare/factorial.h b/poincare/include/poincare/factorial.h index 9c4d5a4eb..76bac852a 100644 --- a/poincare/include/poincare/factorial.h +++ b/poincare/include/poincare/factorial.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -25,7 +24,6 @@ public: Expression setSign(Sign s, Context * context, Preferences::AngleUnit angleUnit) override; // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/floor.h b/poincare/include/poincare/floor.h index 48e85999d..24fc2b44f 100644 --- a/poincare/include/poincare/floor.h +++ b/poincare/include/poincare/floor.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -24,7 +23,6 @@ public: // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/frac_part.h b/poincare/include/poincare/frac_part.h index aca4ee91c..b39d8e039 100644 --- a/poincare/include/poincare/frac_part.h +++ b/poincare/include/poincare/frac_part.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -24,7 +23,6 @@ public: // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/function.h b/poincare/include/poincare/function.h index aecee8ad5..71aa21854 100644 --- a/poincare/include/poincare/function.h +++ b/poincare/include/poincare/function.h @@ -29,8 +29,6 @@ public: // Complex bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override; - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override; - ComplexPolar complexPolar(Context & context, Preferences::AngleUnit angleUnit) const override; private: char m_name[0]; // MUST be the last member variable diff --git a/poincare/include/poincare/great_common_divisor.h b/poincare/include/poincare/great_common_divisor.h index 1e1a86a08..8d601de24 100644 --- a/poincare/include/poincare/great_common_divisor.h +++ b/poincare/include/poincare/great_common_divisor.h @@ -2,7 +2,6 @@ #define POINCARE_GREAT_COMMON_DIVISOR_H #include -#include namespace Poincare { @@ -21,7 +20,6 @@ public: // ExpressionNode Type type() const override { return Type::GreatCommonDivisor; } // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/imaginary_part.h b/poincare/include/poincare/imaginary_part.h index bbc8bde4a..d6f24f590 100644 --- a/poincare/include/poincare/imaginary_part.h +++ b/poincare/include/poincare/imaginary_part.h @@ -2,7 +2,6 @@ #define POINCARE_IMAGINARY_PART_H #include -#include #include namespace Poincare { @@ -23,7 +22,6 @@ public: Type type() const override { return Type::ImaginaryPart; } // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/integral.h b/poincare/include/poincare/integral.h index 57d82309c..b9231ca71 100644 --- a/poincare/include/poincare/integral.h +++ b/poincare/include/poincare/integral.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -25,7 +24,6 @@ public: Expression replaceUnknown(const Symbol & symbol) override; // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/least_common_multiple.h b/poincare/include/poincare/least_common_multiple.h index dcbc9a0db..00b909bd5 100644 --- a/poincare/include/poincare/least_common_multiple.h +++ b/poincare/include/poincare/least_common_multiple.h @@ -2,7 +2,6 @@ #define POINCARE_LEAST_COMMON_MULTIPLE_H #include -#include namespace Poincare { @@ -21,7 +20,6 @@ public: Type type() const override { return Type::LeastCommonMultiple; } // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/matrix_dimension.h b/poincare/include/poincare/matrix_dimension.h index 215e89d42..66fe2d550 100644 --- a/poincare/include/poincare/matrix_dimension.h +++ b/poincare/include/poincare/matrix_dimension.h @@ -2,7 +2,6 @@ #define POINCARE_MATRIX_DIMENSION_H #include -#include namespace Poincare { @@ -21,9 +20,6 @@ public: // Properties Type type() const override { return Type::MatrixDimension; } -// Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } - private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; diff --git a/poincare/include/poincare/multiplication.h b/poincare/include/poincare/multiplication.h index a06148859..8cb6ec154 100644 --- a/poincare/include/poincare/multiplication.h +++ b/poincare/include/poincare/multiplication.h @@ -25,15 +25,6 @@ public: int polynomialDegree(Context & context, const char * symbolName) const override; int getPolynomialCoefficients(Context & context, const char * symbolName, Expression coefficients[]) const override; - // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override; - /* If we use the formula arg(a*b) = arg(a)+arg(b), we are likely to end up - * with additions of arcTangent. To avoid that, we compute the argument(a*b) - * from the real and imaginary part of a*b. - * TODO: What about norm(a*b)? */ - //ComplexPolar complexPolar(Context & context, Preferences::AngleUnit angleUnit) const override; - //Expression complexArgument(Context & context, Preferences::AngleUnit angleUnit) const override; - // Approximation template static Complex compute(const std::complex c, const std::complex d) { return Complex(c*d); } template static MatrixComplex computeOnComplexAndMatrix(const std::complex c, const MatrixComplex m) { diff --git a/poincare/include/poincare/nth_root.h b/poincare/include/poincare/nth_root.h index 22caadc24..191d881db 100644 --- a/poincare/include/poincare/nth_root.h +++ b/poincare/include/poincare/nth_root.h @@ -2,7 +2,6 @@ #define POINCARE_NTH_ROOT_H #include -#include namespace Poincare { @@ -20,10 +19,6 @@ public: } #endif - // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianFromComplexPolar(this, context, angleUnit); } - ComplexPolar complexPolar(Context & context, Preferences::AngleUnit angleUnit) const override; - private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; diff --git a/poincare/include/poincare/number.h b/poincare/include/poincare/number.h index b2fbb08a2..d1a9affed 100644 --- a/poincare/include/poincare/number.h +++ b/poincare/include/poincare/number.h @@ -2,7 +2,6 @@ #define POINCARE_NUMBER_H #include -#include namespace Poincare { @@ -24,7 +23,6 @@ public: double doubleApproximation() const; // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } }; diff --git a/poincare/include/poincare/opposite.h b/poincare/include/poincare/opposite.h index c14eb2d5a..8e443f6f9 100644 --- a/poincare/include/poincare/opposite.h +++ b/poincare/include/poincare/opposite.h @@ -27,10 +27,6 @@ public: int polynomialDegree(Context & context, const char * symbolName) const override; Sign sign(Context * context, Preferences::AngleUnit angleUnit) const override; - // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override; - ComplexPolar complexPolar(Context & context, Preferences::AngleUnit angleUnit) const override; - // Approximation Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { return ApproximationHelper::Map(this, context, angleUnit, compute); diff --git a/poincare/include/poincare/parenthesis.h b/poincare/include/poincare/parenthesis.h index edfb3f17f..bd8e7d7ed 100644 --- a/poincare/include/poincare/parenthesis.h +++ b/poincare/include/poincare/parenthesis.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -23,10 +22,6 @@ public: Type type() const override { return Type::Parenthesis; } int polynomialDegree(Context & context, const char * symbolName) const override; - // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return childAtIndex(0)->complexCartesian(context, angleUnit); } - ComplexPolar complexPolar(Context & context, Preferences::AngleUnit angleUnit) const override { return childAtIndex(0)->complexPolar(context, angleUnit); } - // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; diff --git a/poincare/include/poincare/permute_coefficient.h b/poincare/include/poincare/permute_coefficient.h index 00bc4e579..426a90684 100644 --- a/poincare/include/poincare/permute_coefficient.h +++ b/poincare/include/poincare/permute_coefficient.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -24,9 +23,7 @@ public: // Properties Type type() const override{ return Type::PermuteCoefficient; } - // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/power.h b/poincare/include/poincare/power.h index 7b1503d1a..e1c8f34d1 100644 --- a/poincare/include/poincare/power.h +++ b/poincare/include/poincare/power.h @@ -23,8 +23,6 @@ public: // Complex bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override; - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override; - ComplexPolar complexPolar(Context & context, Preferences::AngleUnit angleUnit) const override; // Properties Type type() const override { return Type::Power; } diff --git a/poincare/include/poincare/prediction_interval.h b/poincare/include/poincare/prediction_interval.h index 273eadaa2..9b27a7861 100644 --- a/poincare/include/poincare/prediction_interval.h +++ b/poincare/include/poincare/prediction_interval.h @@ -2,7 +2,6 @@ #define POINCARE_PREDICTION_INTERVAL_H #include -#include namespace Poincare { @@ -20,9 +19,6 @@ public: // ExpressionNode - // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } - // Properties Type type() const override { return Type::PredictionInterval; } int polynomialDegree(Context & context, const char * symbolName) const override { return -1; } diff --git a/poincare/include/poincare/randint.h b/poincare/include/poincare/randint.h index 25e5b1d95..ce11d615c 100644 --- a/poincare/include/poincare/randint.h +++ b/poincare/include/poincare/randint.h @@ -2,7 +2,6 @@ #define POINCARE_RANDINT_H #include -#include namespace Poincare { @@ -22,7 +21,6 @@ public: Type type() const override { return Type::Randint; } // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/random.h b/poincare/include/poincare/random.h index a78507d6d..eb3a0c0b8 100644 --- a/poincare/include/poincare/random.h +++ b/poincare/include/poincare/random.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -20,7 +19,6 @@ public: #endif // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } // Properties diff --git a/poincare/include/poincare/real_part.h b/poincare/include/poincare/real_part.h index da5a13da5..f1344ccc7 100644 --- a/poincare/include/poincare/real_part.h +++ b/poincare/include/poincare/real_part.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -23,7 +22,6 @@ public: Type type() const override { return Type::RealPart; } // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/round.h b/poincare/include/poincare/round.h index a2ae66d7a..b9007b9f4 100644 --- a/poincare/include/poincare/round.h +++ b/poincare/include/poincare/round.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -20,7 +19,6 @@ public: #endif // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } // Properties diff --git a/poincare/include/poincare/sign_function.h b/poincare/include/poincare/sign_function.h index d2a845c0d..994e9926c 100644 --- a/poincare/include/poincare/sign_function.h +++ b/poincare/include/poincare/sign_function.h @@ -2,7 +2,6 @@ #define POINCARE_SIGN_FUNCTION_H #include -#include #include namespace Poincare { @@ -25,7 +24,6 @@ public: Expression setSign(Sign s, Context * context, Preferences::AngleUnit angleUnit) override; // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianRealFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return true; } private: diff --git a/poincare/include/poincare/sine.h b/poincare/include/poincare/sine.h index d2561db0c..442630cc8 100644 --- a/poincare/include/poincare/sine.h +++ b/poincare/include/poincare/sine.h @@ -4,7 +4,6 @@ #include #include #include -#include namespace Poincare { @@ -21,7 +20,6 @@ public: #endif // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianComplexFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return childAtIndex(0)->isReal(context, angleUnit); } // Properties diff --git a/poincare/include/poincare/square_root.h b/poincare/include/poincare/square_root.h index 872465227..3b815898f 100644 --- a/poincare/include/poincare/square_root.h +++ b/poincare/include/poincare/square_root.h @@ -22,17 +22,7 @@ public: } #endif - // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override; - /* If we use the formula arg(sqrt(a)) = arg(a)/2, we are likely to end up - * with half arcTangent. To avoid that, we compute the argument(sqrt(a)) - * from the real and imaginary part of sqrt(a). - * TODO: What about norm(sqrt(a))? */ - //ComplexPolar complexPolar(Context & context, Preferences::AngleUnit angleUnit) const override; - private: - //Complex - static Multiplication complexCartesianHelper(Expression e, Context & context, Preferences::AngleUnit angleUnit); // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; diff --git a/poincare/include/poincare/subtraction.h b/poincare/include/poincare/subtraction.h index b0334b825..122c4f994 100644 --- a/poincare/include/poincare/subtraction.h +++ b/poincare/include/poincare/subtraction.h @@ -24,9 +24,6 @@ public: Type type() const override { return Type::Subtraction; } int polynomialDegree(Context & context, const char * symbolName) const override; - // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override; - // Approximation template static Complex compute(const std::complex c, const std::complex d) { return Complex(c - d); } Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { diff --git a/poincare/include/poincare/symbol.h b/poincare/include/poincare/symbol.h index 989bfef8f..d621cf0a4 100644 --- a/poincare/include/poincare/symbol.h +++ b/poincare/include/poincare/symbol.h @@ -28,8 +28,6 @@ public: // Complex bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override; - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override; - ComplexPolar complexPolar(Context & context, Preferences::AngleUnit angleUnit) const override; /* Layout */ Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; diff --git a/poincare/include/poincare/symbol_abstract.h b/poincare/include/poincare/symbol_abstract.h index e5ffb9c2c..01bd719bc 100644 --- a/poincare/include/poincare/symbol_abstract.h +++ b/poincare/include/poincare/symbol_abstract.h @@ -81,8 +81,6 @@ protected: private: static Expression Expand(const SymbolAbstract & symbol, Context & context, bool clone); static bool isReal(const SymbolAbstract & symbol, Context & context, Preferences::AngleUnit angleUnit); - static ComplexCartesian complexCartesian(const SymbolAbstract & symbol, Context & context, Preferences::AngleUnit angleUnit); - static ComplexPolar complexPolar(const SymbolAbstract & symbol, Context & context, Preferences::AngleUnit angleUnit); static size_t AlignedNodeSize(size_t nameLength, size_t nodeSize); }; diff --git a/poincare/include/poincare/tangent.h b/poincare/include/poincare/tangent.h index b4c0aa747..71c1f2b1c 100644 --- a/poincare/include/poincare/tangent.h +++ b/poincare/include/poincare/tangent.h @@ -2,7 +2,6 @@ #define POINCARE_TANGENT_H #include -#include #include namespace Poincare { @@ -24,7 +23,6 @@ public: float characteristicXRange(Context & context, Preferences::AngleUnit angleUnit) const override; // Complex - ComplexCartesian complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const override { return ComplexHelper::complexCartesianComplexFunction(this, context, angleUnit); } bool isReal(Context & context, Preferences::AngleUnit angleUnit) const override { return childAtIndex(0)->isReal(context, angleUnit); } private: diff --git a/poincare/include/poincare/undefined.h b/poincare/include/poincare/undefined.h index 6d3588686..23fbb03b8 100644 --- a/poincare/include/poincare/undefined.h +++ b/poincare/include/poincare/undefined.h @@ -17,7 +17,7 @@ public: #endif // Complex - using ExpressionNode::complexCartesian; + using ExpressionNode::isReal; // Properties Type type() const override { return Type::Undefined; } diff --git a/poincare/src/absolute_value.cpp b/poincare/src/absolute_value.cpp index 44c45e734..baa33c08f 100644 --- a/poincare/src/absolute_value.cpp +++ b/poincare/src/absolute_value.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include diff --git a/poincare/src/addition.cpp b/poincare/src/addition.cpp index 9b7fbc659..40e27c4c3 100644 --- a/poincare/src/addition.cpp +++ b/poincare/src/addition.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -27,30 +28,6 @@ int AdditionNode::getPolynomialCoefficients(Context & context, const char * symb return Addition(this).getPolynomialCoefficients(context, symbolName, coefficients); } -// Private - -ComplexCartesian AdditionNode::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - Expression e(this); - Addition real; - Addition imag; - int nbOfChildren = e.numberOfChildren(); - for (int i = 0; i < nbOfChildren; i++) { - ComplexCartesian cartesianParts = e.childAtIndex(i).complexCartesian(context, angleUnit); - if (cartesianParts.isUninitialized()) { - return ComplexCartesian(); - } - Expression a = cartesianParts.real(); - Expression b = cartesianParts.imag(); - assert(!a.isUninitialized() && !b.isUninitialized()); - real.addChildAtIndexInPlace(a, real.numberOfChildren(), real.numberOfChildren()); - imag.addChildAtIndexInPlace(b, imag.numberOfChildren(), imag.numberOfChildren()); - } - return ComplexCartesian::Builder( - real.shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - imag.shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ); -} - // Layout bool AdditionNode::childNeedsParenthesis(const TreeNode * child) const { if (((static_cast(child)->isNumber() diff --git a/poincare/src/complex_argument.cpp b/poincare/src/complex_argument.cpp index fa0b69ae8..60c9d7d8e 100644 --- a/poincare/src/complex_argument.cpp +++ b/poincare/src/complex_argument.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include diff --git a/poincare/src/complex_helper.cpp b/poincare/src/complex_helper.cpp deleted file mode 100644 index 4ad679be6..000000000 --- a/poincare/src/complex_helper.cpp +++ /dev/null @@ -1,132 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace Poincare { - -ComplexCartesian ComplexHelper::complexCartesianComplexFunction(const ExpressionNode * node, Context & context, Preferences::AngleUnit angleUnit) { - Expression e(node); - ComplexCartesian complexChild = e.childAtIndex(0).complexCartesian(context, angleUnit); - if (complexChild.isUninitialized()) { - return ComplexCartesian(); - } - Expression childImaginaryPart = complexChild.imag(); - assert(!childImaginaryPart.isUninitialized()); - if (childImaginaryPart.type() != ExpressionNode::Type::Rational || !static_cast(childImaginaryPart).isZero()) { - return ComplexCartesian(); - } - return ComplexCartesian::Builder( - e.clone(), - Rational(0) - ); -} - -ComplexCartesian ComplexHelper::complexCartesianRealFunction(const ExpressionNode * e, Context & context, Preferences::AngleUnit angleUnit) { - return ComplexCartesian::Builder( - Expression(e).clone(), - Rational(0) - ); -} - -Expression ComplexHelper::complexCartesianFromComplexPolarHelper(Expression norm, Expression trigo, Context & context, Preferences::AngleUnit angleUnit) { - return Multiplication(norm, trigo.shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation)).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation); -} - -ComplexCartesian ComplexHelper::complexCartesianFromComplexPolar(const ExpressionNode * node, Context & context, Preferences::AngleUnit angleUnit) { - Expression e(node); - ComplexPolar polar = e.complexPolar(context, angleUnit); - if (polar.isUninitialized()) { - return ComplexCartesian(); - } - Expression r = polar.norm(); - Expression th = polar.arg(); - assert(!r.isUninitialized() && !th.isUninitialized()); - Expression argument = th; - return ComplexCartesian::Builder( - complexCartesianFromComplexPolarHelper(r.clone(), Cosine::Builder(argument.clone()), context, angleUnit), - complexCartesianFromComplexPolarHelper(r, Sine::Builder(argument), context, angleUnit) - ); -} - -ComplexPolar ComplexHelper::complexPolarFromComplexCartesian(const ExpressionNode * node, Context & context, Preferences::AngleUnit angleUnit) { - Expression e(node); - ComplexCartesian cartesian = e.complexCartesian(context, angleUnit); - if (cartesian.isUninitialized()) { - return ComplexPolar(); - } - Expression a = cartesian.real(); - Expression b = cartesian.imag(); - assert(!a.isUninitialized() && !b.isUninitialized()); - // Step 1: find norm - Expression norm; - ExpressionNode::Sign s = e.sign(&context, angleUnit); - if (s == ExpressionNode::Sign::Positive) { - // Case 1: the expression is positive real - norm = e.clone(); - } else if (s == ExpressionNode::Sign::Negative) { - // Case 2: the argument is negative real - norm = e.clone().setSign(ExpressionNode::Sign::Positive, &context, angleUnit); - } else { - // Case 3: the argument is complex or of unknown approximation - // sqrt(a^2+b^2) - norm = SquareRoot::Builder( - Addition( - Power(a.clone(), Rational(2)).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation), - Power(b.clone(), Rational(2)).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation); - } - // Step 2: find the argument - Expression argument; - float bApprox = b.approximateToScalar(context, angleUnit); - if (bApprox != 0.0f) { - // if b != 0, argument = sign(b) * Pi/2 - arctan(a/b) - // First, compute arctan(a/b) or (Pi/180)*arctan(a/b) - Expression arcTangent = ArcTangent::Builder(Division(a, b.clone()).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation)).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation); - // Then, compute sign(b) * Pi/2 - arctan(a/b) - argument = Subtraction( - Multiplication( - SignFunction::Builder(b).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation), - Division(Constant(Ion::Charset::SmallPi), Rational(2)).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation), - arcTangent - ).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation); - } else { - // if b == 0, argument = (1-sign(a))*Pi/2 - argument = Multiplication( - Subtraction( - Rational(1), - SignFunction::Builder(a).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation), - Division(Constant(Ion::Charset::SmallPi), Rational(2)).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation); - } - return ComplexPolar::Builder(norm, argument); - -} - -Expression ComplexHelper::complexSquareNormComplexCartesian(Expression real, Expression imag, Context & context, Preferences::AngleUnit angleUnit) { - assert(!real.isUninitialized() && !imag.isUninitialized()); - return Addition( - Power( - real, - Rational(2) - ).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation), - Power( - imag, - Rational(2) - ).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation); -} - -} diff --git a/poincare/src/conjugate.cpp b/poincare/src/conjugate.cpp index eae04b0ac..796af952e 100644 --- a/poincare/src/conjugate.cpp +++ b/poincare/src/conjugate.cpp @@ -1,7 +1,6 @@ #include #include #include -#include #include #include #include @@ -16,28 +15,6 @@ constexpr Expression::FunctionHelper Conjugate::s_functionHelper; int ConjugateNode::numberOfChildren() const { return Conjugate::s_functionHelper.numberOfChildren(); } -ComplexCartesian ConjugateNode::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - ComplexCartesian childCartesian = childAtIndex(0)->complexCartesian(context, angleUnit); - if (childCartesian.isUninitialized()) { - return ComplexCartesian(); - } - return ComplexCartesian::Builder( - childCartesian.real(), - Multiplication(Rational(-1), childCartesian.imag()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ); -} - -ComplexPolar ConjugateNode::complexPolar(Context & context, Preferences::AngleUnit angleUnit) const { - ComplexPolar childPolar = childAtIndex(0)->complexPolar(context, angleUnit); - if (childPolar.isUninitialized()) { - return ComplexPolar(); - } - return ComplexPolar::Builder( - childPolar.norm(), - Multiplication(Rational(-1), childPolar.arg()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ); -} - Layout ConjugateNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return ConjugateLayout(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits)); } diff --git a/poincare/src/constant.cpp b/poincare/src/constant.cpp index 50ec2c2cc..3eb6f53be 100644 --- a/poincare/src/constant.cpp +++ b/poincare/src/constant.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -20,13 +21,6 @@ bool ConstantNode::isReal(Context & context, Preferences::AngleUnit angleUnit) c return !isIComplex(); } -ComplexCartesian ConstantNode::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - if (isIComplex()) { - return ComplexCartesian::Builder(Rational(0), Rational(1)); - } - return ComplexCartesian::Builder(Constant(this).clone(), Rational(0)); -} - Layout ConstantNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::String(m_name, strlen(m_name)); } diff --git a/poincare/src/division.cpp b/poincare/src/division.cpp index 56aa1d2af..54dc36e32 100644 --- a/poincare/src/division.cpp +++ b/poincare/src/division.cpp @@ -46,47 +46,6 @@ Expression DivisionNode::shallowReduce(Context & context, Preferences::AngleUnit return Division(this).shallowReduce(context, angleUnit, target); } -ComplexCartesian DivisionNode::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - Division e(this); - ComplexCartesian cartesianChild0 = e.childAtIndex(0).complexCartesian(context, angleUnit); - ComplexCartesian cartesianChild1 = e.childAtIndex(1).complexCartesian(context, angleUnit); - if (cartesianChild0.isUninitialized() || cartesianChild1.isUninitialized()) { - return ComplexCartesian(); - } - Expression a = cartesianChild0.real(); - Expression b = cartesianChild0.imag(); - Expression c = cartesianChild1.real(); - Expression d = cartesianChild1.imag(); - assert(!a.isUninitialized() && !b.isUninitialized() && !c.isUninitialized() && !d.isUninitialized()); - Expression denominator = ComplexHelper::complexSquareNormComplexCartesian(c.clone(), d.clone(), context, angleUnit); - return ComplexCartesian::Builder( - Division( - Addition( - Multiplication(a.clone(), c.clone()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - Multiplication(b.clone(), d.clone()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - denominator.clone() - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - Division( - Subtraction( - Multiplication(b, c).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - Multiplication(a, d).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - denominator - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ); -} - -/*ComplexPolar DivisionNode::complexPolar(Context & context, Preferences::AngleUnit angleUnit) const { - Division d(this); - Expression r0 = d.childAtIndex(0).complexNorm(context, angleUnit); - Expression r1 = d.childAtIndex(1).complexNorm(context, angleUnit); - if (r0.isUninitialized() || r1.isUninitialized()) { - return Expression(); - } - return Division(r0,r1).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation); -}*/ - template Complex DivisionNode::compute(const std::complex c, const std::complex d) { return Complex(c/d); } diff --git a/poincare/src/expression.cpp b/poincare/src/expression.cpp index d072da896..ebc22ae00 100644 --- a/poincare/src/expression.cpp +++ b/poincare/src/expression.cpp @@ -199,26 +199,6 @@ bool Expression::getLinearCoefficients(char * variables, int maxVariableSize, Ex return !isMultivariablePolynomial; } -/* Complex */ - -bool Expression::isPureReal(Context & context, Preferences::AngleUnit angleUnit) const { - Evaluation approx = approximateToEvaluation(context, angleUnit); - if (approx.type() == EvaluationNode::Type::Complex) { - Complex approxComplex = static_cast&>(approx); - return approxComplex.imag() == 0.0f; - } - // TODO: matrix are not reduced yet so isPureReal is dummy if the approximation is a matrix - return true; -} - -ComplexCartesian Expression::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - return node()->complexCartesian(context, angleUnit); -} - -ComplexPolar Expression::complexPolar(Context & context, Preferences::AngleUnit angleUnit) const { - return node()->complexPolar(context, angleUnit); -} - // Private void Expression::defaultDeepReduceChildren(Context & context, Preferences::AngleUnit angleUnit, ExpressionNode::ReductionTarget target) { diff --git a/poincare/src/expression_node.cpp b/poincare/src/expression_node.cpp index 1f4fd19b2..01397ba06 100644 --- a/poincare/src/expression_node.cpp +++ b/poincare/src/expression_node.cpp @@ -3,8 +3,6 @@ #include #include #include -#include -#include #include #include #include @@ -74,14 +72,6 @@ float ExpressionNode::characteristicXRange(Context & context, Preferences::Angle return range; } -ComplexCartesian ExpressionNode::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - return ComplexCartesian(); -} - -ComplexPolar ExpressionNode::complexPolar(Context & context, Preferences::AngleUnit angleUnit) const { - return ComplexHelper::complexPolarFromComplexCartesian(this, context, angleUnit); -} - int ExpressionNode::SimplificationOrder(const ExpressionNode * e1, const ExpressionNode * e2, bool canBeInterrupted) { if (e1->type() > e2->type()) { if (canBeInterrupted && Expression::shouldStopProcessing()) { diff --git a/poincare/src/function.cpp b/poincare/src/function.cpp index 2d6346f9f..8e2b73bcf 100644 --- a/poincare/src/function.cpp +++ b/poincare/src/function.cpp @@ -9,21 +9,11 @@ namespace Poincare { -ComplexCartesian FunctionNode::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - Function f(this); - return SymbolAbstract::complexCartesian(f, context, angleUnit); -} - bool FunctionNode::isReal(Context & context, Preferences::AngleUnit angleUnit) const { Function f(this); return SymbolAbstract::isReal(f, context, angleUnit); } -ComplexPolar FunctionNode::complexPolar(Context & context, Preferences::AngleUnit angleUnit) const { - Function f(this); - return SymbolAbstract::complexPolar(f, context, angleUnit); -} - Expression FunctionNode::replaceSymbolWithExpression(const SymbolAbstract & symbol, const Expression & expression) { return Function(this).replaceSymbolWithExpression(symbol, expression); } diff --git a/poincare/src/imaginary_part.cpp b/poincare/src/imaginary_part.cpp index f8ae8fe45..dfe859363 100644 --- a/poincare/src/imaginary_part.cpp +++ b/poincare/src/imaginary_part.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include diff --git a/poincare/src/multiplication.cpp b/poincare/src/multiplication.cpp index bbc7ad08d..8f1ec2d22 100644 --- a/poincare/src/multiplication.cpp +++ b/poincare/src/multiplication.cpp @@ -31,67 +31,6 @@ ExpressionNode::Sign MultiplicationNode::sign(Context * context, Preferences::An return (Sign)sign; } -ComplexCartesian MultiplicationNode::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - Multiplication m(this); - int nbChildren = m.numberOfChildren(); - assert(nbChildren > 0); - ComplexCartesian cartesian = m.childAtIndex(0).complexCartesian(context, angleUnit); - if (cartesian.isUninitialized()) { - return ComplexCartesian(); - } - Expression real = cartesian.real(); - Expression imag = cartesian.imag(); - assert(!real.isUninitialized() && !imag.isUninitialized()); - for (int i = 1; i < nbChildren; i++) { - ComplexCartesian childCartesian = m.childAtIndex(i).complexCartesian(context, angleUnit); - if (childCartesian.isUninitialized()) { - return ComplexCartesian(); - } - Expression childReal = childCartesian.real(); - Expression childImag = childCartesian.imag(); - assert(!real.isUninitialized() && !imag.isUninitialized()); - Expression newReal = - Subtraction( - Multiplication(real.clone(), childReal.clone()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - Multiplication(imag.clone(), childImag.clone()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation); - Expression newImag = - Addition( - Multiplication(real, childImag).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - Multiplication(imag, childReal).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation); - real = newReal; - imag = newImag; - } - return ComplexCartesian::Builder(real, imag); -} - -/*Expression MultiplicationNode::complexNorm(Context & context, Preferences::AngleUnit angleUnit) const { - Multiplication m(this); - Multiplication norm; - for (int i = 0; i < m.numberOfChildren(); i++) { - Expression r = m.childAtIndex(i).complexNorm(context, angleUnit); - if (r.isUninitialized()) { - return Expression(); - } - norm.addChildAtIndexInPlace(r, norm.numberOfChildren(), norm.numberOfChildren()); - } - return norm.shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation); -} - -Expression MultiplicationNode::complexArgument(Context & context, Preferences::AngleUnit angleUnit) const { - Multiplication m(this); - Addition arg; - for (int i = 0; i < m.numberOfChildren(); i++) { - Expression r = m.childAtIndex(i).complexArgument(context, angleUnit); - if (r.isUninitialized()) { - return Expression(); - } - arg.addChildAtIndexInPlace(r, arg.numberOfChildren(), arg.numberOfChildren()); - } - return arg; -} -*/ int MultiplicationNode::polynomialDegree(Context & context, const char * symbolName) const { int degree = 0; for (ExpressionNode * c : children()) { diff --git a/poincare/src/nth_root.cpp b/poincare/src/nth_root.cpp index 761c84ca2..f4cdca87b 100644 --- a/poincare/src/nth_root.cpp +++ b/poincare/src/nth_root.cpp @@ -18,47 +18,6 @@ constexpr Expression::FunctionHelper NthRoot::s_functionHelper; int NthRootNode::numberOfChildren() const { return NthRoot::s_functionHelper.numberOfChildren(); } -ComplexPolar NthRootNode::complexPolar(Context & context, Preferences::AngleUnit angleUnit) const { - NthRoot e(this); - ComplexPolar polarChild0 = e.childAtIndex(0).complexPolar(context, angleUnit); - ComplexCartesian cartesianChild1 = e.childAtIndex(0).complexCartesian(context, angleUnit); - if (polarChild0.isUninitialized() || cartesianChild1.isUninitialized()) { - return ComplexPolar(); - } - // NthRoot(r*e^(i*th), c+id) - Expression r = polarChild0.norm(); - Expression th = polarChild0.arg(); - Expression c = cartesianChild1.real(); - Expression d = cartesianChild1.imag(); - assert(!r.isUninitialized() && !th.isUninitialized() && !c.isUninitialized() && !d.isUninitialized()); - Expression denominator = ComplexHelper::complexSquareNormComplexCartesian(c.clone(), d.clone(), context, angleUnit); - // R = r^(c/(c^2+d^2))*e^(th*d/(c^2+d^2)) - Expression norm = Multiplication( - Power( - r.clone(), - Division(c.clone(), denominator.clone()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - Power( - Constant(Ion::Charset::Exponential), - Division( - Multiplication(d.clone(), th.clone()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - denominator.clone()) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation); - // TH = (th*c-d*ln(r))/(c^2+d^2) - Expression argument = Division( - Subtraction( - Multiplication(th, c).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - Multiplication( - d, - NaperianLogarithm::Builder(r).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - denominator - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation); - return ComplexPolar::Builder(norm, argument); -} - Layout NthRootNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return NthRootLayout( childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits), diff --git a/poincare/src/opposite.cpp b/poincare/src/opposite.cpp index aa23e6878..3b65c047f 100644 --- a/poincare/src/opposite.cpp +++ b/poincare/src/opposite.cpp @@ -29,28 +29,6 @@ ExpressionNode::Sign OppositeNode::sign(Context * context, Preferences::AngleUni return ExpressionNode::sign(context,angleUnit); } -ComplexCartesian OppositeNode::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - ComplexCartesian childCartesian = childAtIndex(0)->complexCartesian(context, angleUnit); - if (childCartesian.isUninitialized()) { - return ComplexCartesian(); - } - return ComplexCartesian::Builder( - Multiplication(Rational(-1), childCartesian.real()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - Multiplication(Rational(-1), childCartesian.imag()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ); -} - -ComplexPolar OppositeNode::complexPolar(Context & context, Preferences::AngleUnit angleUnit) const { - ComplexPolar childPolar = childAtIndex(0)->complexPolar(context, angleUnit); - if (childPolar.isUninitialized()) { - return ComplexPolar(); - } - return ComplexPolar::Builder( - childPolar.norm(), - Addition(childPolar.arg(), Constant(Ion::Charset::SmallPi)).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ); -} - /* Layout */ bool OppositeNode::childNeedsParenthesis(const TreeNode * child) const { diff --git a/poincare/src/power.cpp b/poincare/src/power.cpp index d7b4dc5b8..92f9c5247 100644 --- a/poincare/src/power.cpp +++ b/poincare/src/power.cpp @@ -94,50 +94,6 @@ bool PowerNode::isReal(Context & context, Preferences::AngleUnit angleUnit) cons return false; } -ComplexCartesian PowerNode::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - Power p(this); - Expression e = p.equivalentExpressionUsingStandardExpression(); - if (!e.isUninitialized()) { - return e.complexCartesian(context, angleUnit); - } - return ComplexHelper::complexCartesianFromComplexPolar(this, context, angleUnit); -} - -ComplexPolar PowerNode::complexPolar(Context & context, Preferences::AngleUnit angleUnit) const { - Power p(this); - Expression e = p.equivalentExpressionUsingStandardExpression(); - if (!e.isUninitialized()) { - return e.complexPolar(context, angleUnit); - } - ComplexPolar polarChild0 = p.childAtIndex(0).complexPolar(context, angleUnit); - ComplexCartesian cartesianChild1 = p.childAtIndex(1).complexCartesian(context, angleUnit); - if (polarChild0.isUninitialized() || cartesianChild1.isUninitialized()) { - return ComplexPolar(); - } - // Power(r*e^(i*th), c+id) - Expression r = polarChild0.norm(); - Expression th = polarChild0.arg(); - Expression c = cartesianChild1.real(); - Expression d = cartesianChild1.imag(); - // R = r^c*e^(-th*d) - Expression norm = Multiplication( - Power(r.clone(), c.clone()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - Power( - Constant(Ion::Charset::Exponential), - Multiplication(Rational(-1), th.clone(), d.clone()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation); - // TH = d*ln(r)+c*th - Expression argument = Addition( - Multiplication(th, c).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - Multiplication( - d, - NaperianLogarithm::Builder(r).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation); - return ComplexPolar::Builder(norm, argument); -} - // Private template diff --git a/poincare/src/real_part.cpp b/poincare/src/real_part.cpp index 3bd0b688c..cf5254634 100644 --- a/poincare/src/real_part.cpp +++ b/poincare/src/real_part.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include diff --git a/poincare/src/sign_function.cpp b/poincare/src/sign_function.cpp index dac3de99b..913c4100e 100644 --- a/poincare/src/sign_function.cpp +++ b/poincare/src/sign_function.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include diff --git a/poincare/src/square_root.cpp b/poincare/src/square_root.cpp index 663cb6d5c..53f7379fd 100644 --- a/poincare/src/square_root.cpp +++ b/poincare/src/square_root.cpp @@ -18,57 +18,6 @@ constexpr Expression::FunctionHelper SquareRoot::s_functionHelper; int SquareRootNode::numberOfChildren() const { return SquareRoot::s_functionHelper.numberOfChildren(); } -/*Expression SquareRootNode::complexNorm(Context & context, Preferences::AngleUnit angleUnit) const { - Expression r = childAtIndex(0)->complexNorm(context, angleUnit); - if (r.isUninitialized()) { - return Expression(); - } - // R = sqrt(r) - return SquareRoot::Builder(r).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation); -}*/ - -/*Expression SquareRootNode::complexArgument(Context & context, Preferences::AngleUnit angleUnit) const { - Expression th = childAtIndex(0)->complexArgument(context, angleUnit); - if (th.isUninitialized()) { - return Expression(); - } - // TH = th/2 - return Division(th, Rational(2)).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation); -}*/ - -Multiplication SquareRootNode::complexCartesianHelper(Expression e, Context & context, Preferences::AngleUnit angleUnit) { - return Multiplication( - Rational(1,2), - SquareRoot::Builder( - Multiplication( - Rational(2), - e.shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ); -} -ComplexCartesian SquareRootNode::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - // real: (1/2)*sqrt(2*(sqrt(x^2+y^2)+x)) - // imag: (1/2)*sqrt(2*(sqrt(x^2+y^2)-x)*sign(y)) - SquareRoot e(this); - ComplexCartesian cartesian = e.childAtIndex(0).complexCartesian(context, angleUnit); - if (cartesian.isUninitialized()) { - return ComplexCartesian(); - } - Expression x = cartesian.real(); - Expression y = cartesian.imag(); - assert(!x.isUninitialized() && !y.isUninitialized()); - Expression norm = SquareRoot::Builder(ComplexHelper::complexSquareNormComplexCartesian(x.clone(), y.clone(), context, angleUnit)).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation); - // a = sqrt(x^2+y^2)+x - Multiplication real = complexCartesianHelper(Addition(norm.clone(), x.clone()), context, angleUnit); - Multiplication imag = complexCartesianHelper(Subtraction(norm, x), context, angleUnit); - imag.addChildAtIndexInPlace(SignFunction::Builder(y).shallowReduce(context, angleUnit, ExpressionNode::ReductionTarget::BottomUpComputation), imag.numberOfChildren(), imag.numberOfChildren()); - return ComplexCartesian::Builder( - real.shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - imag.shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ); -} - Layout SquareRootNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return NthRootLayout(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits)); } diff --git a/poincare/src/subtraction.cpp b/poincare/src/subtraction.cpp index 541fec2b8..f6ce7a4f6 100644 --- a/poincare/src/subtraction.cpp +++ b/poincare/src/subtraction.cpp @@ -23,19 +23,6 @@ int SubtractionNode::polynomialDegree(Context & context, const char * symbolName // Private -ComplexCartesian SubtractionNode::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - Subtraction e(this); - ComplexCartesian cartesian0 = e.childAtIndex(0).complexCartesian(context, angleUnit); - ComplexCartesian cartesian1 = e.childAtIndex(1).complexCartesian(context, angleUnit); - if (cartesian0.isUninitialized() || cartesian1.isUninitialized()) { - return ComplexCartesian(); - } - return ComplexCartesian::Builder( - Subtraction(cartesian0.real(), cartesian1.real()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation), - Subtraction(cartesian0.imag(), cartesian1.imag()).shallowReduce(context, angleUnit, ReductionTarget::BottomUpComputation) - ); -} - bool SubtractionNode::childNeedsParenthesis(const TreeNode * child) const { if (child == childAtIndex(0)) { return false; diff --git a/poincare/src/symbol.cpp b/poincare/src/symbol.cpp index 754f558cc..c4746ba5c 100644 --- a/poincare/src/symbol.cpp +++ b/poincare/src/symbol.cpp @@ -82,16 +82,6 @@ bool SymbolNode::isReal(Context & context, Preferences::AngleUnit angleUnit) con return SymbolAbstract::isReal(s, context, angleUnit); } -ComplexCartesian SymbolNode::complexCartesian(Context & context, Preferences::AngleUnit angleUnit) const { - Symbol s(this); - return SymbolAbstract::complexCartesian(s, context, angleUnit); -} - -ComplexPolar SymbolNode::complexPolar(Context & context, Preferences::AngleUnit angleUnit) const { - Symbol f(this); - return SymbolAbstract::complexPolar(f, context, angleUnit); -} - Layout SymbolNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (m_name[0] == Symbol::SpecialSymbols::UnknownX) { assert(m_name[1] == 0); diff --git a/poincare/src/symbol_abstract.cpp b/poincare/src/symbol_abstract.cpp index c8f57e0c9..4dfe4808a 100644 --- a/poincare/src/symbol_abstract.cpp +++ b/poincare/src/symbol_abstract.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include #include @@ -88,23 +87,6 @@ bool SymbolAbstract::isReal(const SymbolAbstract & symbol, Context & context, Pr return e.isReal(context, angleUnit); } -ComplexCartesian SymbolAbstract::complexCartesian(const SymbolAbstract & symbol, Context & context, Preferences::AngleUnit angleUnit) { - Expression e = SymbolAbstract::Expand(symbol, context, true); - if (e.isUninitialized()) { - return ComplexCartesian::Builder(symbol.clone(), Rational(0)); - } - return e.complexCartesian(context, angleUnit); -} - -ComplexPolar SymbolAbstract::complexPolar(const SymbolAbstract & symbol, Context & context, Preferences::AngleUnit angleUnit) { - Expression e = SymbolAbstract::Expand(symbol, context, true); - if (e.isUninitialized()) { - // sqrt(f(x)^2)*exp((1-sign(f(x))*Pi/2) - return ComplexHelper::complexPolarFromComplexCartesian(symbol.node(), context, angleUnit); - } - return e.complexPolar(context, angleUnit); -} - /* TreePool uses adresses and sizes that are multiples of 4 in order to make * node moves faster.*/ size_t SymbolAbstract::AlignedNodeSize(size_t nameLength, size_t nodeSize) { diff --git a/poincare/src/tree_pool.cpp b/poincare/src/tree_pool.cpp index 4cb9f9486..70d095737 100644 --- a/poincare/src/tree_pool.cpp +++ b/poincare/src/tree_pool.cpp @@ -222,7 +222,6 @@ template OppositeNode * Poincare::TreePool::createTreeNode(size_t template PowerNode * Poincare::TreePool::createTreeNode(size_t size); template ComplexArgumentNode * Poincare::TreePool::createTreeNode(size_t size); template ComplexCartesianNode * Poincare::TreePool::createTreeNode(size_t size); -template ComplexPolarNode * Poincare::TreePool::createTreeNode(size_t size); template ConfidenceIntervalNode * Poincare::TreePool::createTreeNode(size_t size); template ConjugateNode * Poincare::TreePool::createTreeNode(size_t size); template ConstantNode * Poincare::TreePool::createTreeNode(size_t size);