diff options
Diffstat (limited to 'include/expressions.hpp')
-rw-r--r-- | include/expressions.hpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/include/expressions.hpp b/include/expressions.hpp index 604801d..2dcf67c 100644 --- a/include/expressions.hpp +++ b/include/expressions.hpp @@ -32,8 +32,7 @@ public: virtual ~Expression() = default; std::string getRepr(); virtual Expression *diff(const Differentiator *d) = 0; - template <class E> - Expression *simplify(E *expr, const Simplifier *s); + virtual Expression *simplify(const Simplifier *s) = 0; Expression *getLeft(); Expression *getRight(); virtual float eval(int arg=0) = 0; @@ -55,6 +54,7 @@ public: ~Literal(); int getValue(); float eval(int arg=0) override; + Expression *simplify(const Simplifier *s) override; Expression *diff(const Differentiator *d) override; Expression *copy() override; protected: @@ -70,6 +70,7 @@ public: ~Function(); Expression *getArg(); float eval(int arg=0) override; + Expression *simplify(const Simplifier *s) override; Expression *diff(const Differentiator *d) override; trig_functions getFunctionName() const; Expression *copy() override; @@ -85,6 +86,7 @@ public: explicit Variable(char name); ~Variable(); float eval(int arg=0) override; + Expression *simplify(const Simplifier *s) override; Expression *diff(const Differentiator *d) override; Expression *copy() override; protected: @@ -97,6 +99,7 @@ public: ~AddExpression(); float eval(int arg=0) override; Expression *diff(const Differentiator *d) override; + Expression *simplify(const Simplifier *s) override; Expression *copy() override; }; @@ -107,6 +110,7 @@ public: float eval(int arg=0) override; Expression *copy() override; Expression *diff(const Differentiator *d) override; + Expression *simplify(const Simplifier *s) override; }; class NegationExpression : public Expression { @@ -116,6 +120,7 @@ public: float eval(int arg=0) override; Expression *copy() override; Expression *diff(const Differentiator *d) override; + Expression *simplify(const Simplifier *s) override; protected: void setRepr() override; }; @@ -127,6 +132,7 @@ public: float eval(int arg=0) override; Expression *copy() override; Expression *diff(const Differentiator *d) override; + Expression *simplify(const Simplifier *s) override; }; class MultiplicationExpression : public Expression { @@ -136,6 +142,7 @@ public: float eval(int arg=0) override; Expression *copy() override; Expression *diff(const Differentiator *d) override; + Expression *simplify(const Simplifier *s) override; }; class PowerExpression : public Expression { @@ -145,6 +152,7 @@ public: float eval(int arg=0) override; Expression *copy() override; Expression *diff(const Differentiator *d) override; + Expression *simplify(const Simplifier *s) override; }; #endif /* EXPRESSIONS_H */ |