summaryrefslogtreecommitdiff
path: root/include/expressions.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/expressions.hpp')
-rw-r--r--include/expressions.hpp12
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 */