Skip to content

Commit

Permalink
Remove getFunctionsForSimplify & fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
fintarin committed Jul 11, 2023
1 parent 084325f commit 865d854
Show file tree
Hide file tree
Showing 28 changed files with 66 additions and 108 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ class IBinaryExpression : public IExpression {

using SimplifyFunctionsVector = std::vector<SimplifyFunction>;

virtual SimplifyFunctionsVector getFunctionsForSimplify() const;

virtual SimplifyFunctionsVector getFunctionsForPreSimplify() const;

virtual SimplifyFunctionsVector getFunctionsForPostSimplify() const;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ class IPolynomExpression : public IExpression {
int size = 0;
};

virtual SimplifyFunctionsVector getFunctionsForSimplify() const;

virtual SimplifyFunctionsVector getFunctionsForPreSimplify() const;

virtual SimplifyFunctionsVector getFunctionsForPostSimplify() const;
Expand Down
2 changes: 0 additions & 2 deletions include/fintamath/expressions/interfaces/IUnaryExpression.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ class IUnaryExpression : public IExpression {

using SimplifyFunctionsVector = std::vector<SimplifyFunction>;

virtual SimplifyFunctionsVector getFunctionsForSimplify() const;

virtual SimplifyFunctionsVector getFunctionsForPreSimplify() const;

virtual SimplifyFunctionsVector getFunctionsForPostSimplify() const;
Expand Down
9 changes: 6 additions & 3 deletions src/fintamath/expressions/binary/DivExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,22 @@ DivExpression::DivExpression(const ArgumentPtr &inLhsChild, const ArgumentPtr &i
: IBinaryExpressionCRTP(Div(), inLhsChild, inRhsChild) {
}

DivExpression::SimplifyFunctionsVector DivExpression::getFunctionsForSimplify() const {
DivExpression::SimplifyFunctionsVector DivExpression::getFunctionsForPreSimplify() const {
static const DivExpression::SimplifyFunctionsVector simplifyFunctions = {
&DivExpression::zeroSimplify, //
&DivExpression::divSimplify, //
&DivExpression::mulSimplify, //
&DivExpression::zeroSimplify, //
};
return simplifyFunctions;
}

DivExpression::SimplifyFunctionsVector DivExpression::getFunctionsForPostSimplify() const {
static const DivExpression::SimplifyFunctionsVector simplifyFunctions = {
&DivExpression::numSimplify, //
&DivExpression::zeroSimplify, //
&DivExpression::negSimplify, //
&DivExpression::numSimplify, //
&DivExpression::divSimplify, //
&DivExpression::mulSimplify, //
&DivExpression::nestedRationalsSimplify, //
&DivExpression::sumSimplify, //
};
Expand Down
2 changes: 1 addition & 1 deletion src/fintamath/expressions/binary/DivExpression.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class DivExpression : public IBinaryExpressionCRTP<DivExpression> {
}

protected:
SimplifyFunctionsVector getFunctionsForSimplify() const override;
SimplifyFunctionsVector getFunctionsForPreSimplify() const override;

SimplifyFunctionsVector getFunctionsForPostSimplify() const override;

Expand Down
6 changes: 4 additions & 2 deletions src/fintamath/expressions/binary/LogExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ ArgumentPtr LogExpression::preciseSimplify() const {
return IBinaryExpression::preciseSimplify();
}

LogExpression::SimplifyFunctionsVector LogExpression::getFunctionsForSimplify() const {
LogExpression::SimplifyFunctionsVector LogExpression::getFunctionsForPreSimplify() const {
static const LogExpression::SimplifyFunctionsVector simplifyFunctions = {
&LogExpression::numSimplify, //
&LogExpression::equalSimplify, //
Expand All @@ -58,7 +58,9 @@ LogExpression::SimplifyFunctionsVector LogExpression::getFunctionsForSimplify()

LogExpression::SimplifyFunctionsVector LogExpression::getFunctionsForPostSimplify() const {
static const LogExpression::SimplifyFunctionsVector simplifyFunctions = {
&LogExpression::powSimplify, //
&LogExpression::powSimplify, //
&LogExpression::numSimplify, //
&LogExpression::equalSimplify, //
};
return simplifyFunctions;
}
Expand Down
2 changes: 1 addition & 1 deletion src/fintamath/expressions/binary/LogExpression.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class LogExpression : public IBinaryExpressionCRTP<LogExpression> {
protected:
ArgumentPtr preciseSimplify() const override;

SimplifyFunctionsVector getFunctionsForSimplify() const override;
SimplifyFunctionsVector getFunctionsForPreSimplify() const override;

SimplifyFunctionsVector getFunctionsForPostSimplify() const override;

Expand Down
2 changes: 2 additions & 0 deletions src/fintamath/expressions/binary/PowExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ PowExpression::SimplifyFunctionsVector PowExpression::getFunctionsForPostSimplif
static const PowExpression::SimplifyFunctionsVector simplifyFunctions = {
&PowExpression::numSimplify, //
&PowExpression::polynomSimplify, //
&PowExpression::negSimplify, //
&PowExpression::powSimplify, //
};
return simplifyFunctions;
}
Expand Down
12 changes: 0 additions & 12 deletions src/fintamath/expressions/interfaces/IBinaryExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@ ArgumentPtr IBinaryExpression::preSimplify() const {

ArgumentPtr res = simpl->useSimplifyFunctions(getFunctionsForPreSimplify());

if (!res) {
res = simpl->useSimplifyFunctions(getFunctionsForSimplify());
}

if (res && *res != *simpl) {
preSimplifyChild(res);
return res;
Expand All @@ -50,10 +46,6 @@ ArgumentPtr IBinaryExpression::postSimplify() const {

ArgumentPtr res = simpl->useSimplifyFunctions(getFunctionsForPostSimplify());

if (!res) {
res = simpl->useSimplifyFunctions(getFunctionsForSimplify());
}

if (res && *res != *simpl) {
postSimplifyChild(res);
return res;
Expand Down Expand Up @@ -86,10 +78,6 @@ ArgumentPtr IBinaryExpression::useSimplifyFunctions(const SimplifyFunctionsVecto
return {};
}

IBinaryExpression::SimplifyFunctionsVector IBinaryExpression::getFunctionsForSimplify() const {
return {};
}

IBinaryExpression::SimplifyFunctionsVector IBinaryExpression::getFunctionsForPreSimplify() const {
return {};
}
Expand Down
12 changes: 0 additions & 12 deletions src/fintamath/expressions/interfaces/IPolynomExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,21 +105,13 @@ void IPolynomExpression::simplifyRec(bool isPostSimplify) {
: useSimplifyFunctions(getFunctionsForPreSimplify(), i - 1, i);
}

if (!res) {
res = useSimplifyFunctions(getFunctionsForSimplify(), i - 1, i);
}

if (!res) {
continue;
}

if (!isResSimplified) {
ArgumentPtr prevExpr = makeExpr(*getFunction(), lhs, rhs);

if (*prevExpr == *res) {
continue;
}

if (isPostSimplify) {
postSimplifyChild(res);
}
Expand Down Expand Up @@ -162,10 +154,6 @@ void IPolynomExpression::simplifyChildren(bool isPostSimplify) {
}
}

IPolynomExpression::SimplifyFunctionsVector IPolynomExpression::getFunctionsForSimplify() const {
return {};
}

IPolynomExpression::SimplifyFunctionsVector IPolynomExpression::getFunctionsForPreSimplify() const {
return {};
}
Expand Down
12 changes: 0 additions & 12 deletions src/fintamath/expressions/interfaces/IUnaryExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,6 @@ ArgumentsPtrVector IUnaryExpression::getChildren() const {
return {child};
}

IUnaryExpression::SimplifyFunctionsVector IUnaryExpression::getFunctionsForSimplify() const {
return {};
}

IUnaryExpression::SimplifyFunctionsVector IUnaryExpression::getFunctionsForPreSimplify() const {
return {};
}
Expand All @@ -50,10 +46,6 @@ ArgumentPtr IUnaryExpression::preSimplify() const {

ArgumentPtr res = simpl->useSimplifyFunctions(getFunctionsForPreSimplify());

if (!res) {
res = simpl->useSimplifyFunctions(getFunctionsForSimplify());
}

if (res && *res != *simpl) {
preSimplifyChild(res);
return res;
Expand All @@ -72,10 +64,6 @@ ArgumentPtr IUnaryExpression::postSimplify() const {

ArgumentPtr res = simpl->useSimplifyFunctions(getFunctionsForPostSimplify());

if (!res) {
res = simpl->useSimplifyFunctions(getFunctionsForSimplify());
}

if (res && *res != *simpl) {
postSimplifyChild(res);
return res;
Expand Down
14 changes: 9 additions & 5 deletions src/fintamath/expressions/polynomial/AddExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,11 @@ int AddExpression::comparator(const ArgumentPtr &lhs, const ArgumentPtr &rhs) co
return IPolynomExpression::comparator(lhs, rhs);
}

AddExpression::SimplifyFunctionsVector AddExpression::getFunctionsForSimplify() const {
AddExpression::SimplifyFunctionsVector AddExpression::getFunctionsForPreSimplify() const {
static const AddExpression::SimplifyFunctionsVector simplifyFunctions = {
&AddExpression::simplifyNegations, //
&AddExpression::simplifyCallFunction, //
&AddExpression::sumDivisions, //
&AddExpression::simplifyNumbers, //
&AddExpression::sumRates, //
&AddExpression::simplifyLogarithms, //
Expand All @@ -78,11 +81,12 @@ AddExpression::SimplifyFunctionsVector AddExpression::getFunctionsForSimplify()
return simplifyFunctions;
}

AddExpression::SimplifyFunctionsVector AddExpression::getFunctionsForPreSimplify() const {
AddExpression::SimplifyFunctionsVector AddExpression::getFunctionsForPostSimplify() const {
static const AddExpression::SimplifyFunctionsVector simplifyFunctions = {
&AddExpression::simplifyNegations, //
&AddExpression::simplifyCallFunction, //
&AddExpression::sumDivisions, //
&AddExpression::simplifyNumbers, //
&AddExpression::sumRates, //
&AddExpression::simplifyLogarithms, //
&AddExpression::simplifyMulLogarithms, //
};
return simplifyFunctions;
}
Expand Down
7 changes: 4 additions & 3 deletions src/fintamath/expressions/polynomial/AddExpression.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ class AddExpression : public IPolynomExpressionCRTP<AddExpression> {
}

protected:
SimplifyFunctionsVector getFunctionsForSimplify() const override;

SimplifyFunctionsVector getFunctionsForPreSimplify() const override;

SimplifyFunctionsVector getFunctionsForPostSimplify() const override;

std::string operatorChildToString(const ArgumentPtr &inChild, const ArgumentPtr &prevChild) const override;

/**
Expand All @@ -33,7 +33,8 @@ class AddExpression : public IPolynomExpressionCRTP<AddExpression> {
private:
static ArgumentPtr simplifyNumbers(const IFunction &func, const ArgumentPtr &lhsChild, const ArgumentPtr &rhsChild);

static ArgumentPtr simplifyCallFunction(const IFunction &func, const ArgumentPtr &lhsChild, const ArgumentPtr &rhsChild);
static ArgumentPtr simplifyCallFunction(const IFunction &func, const ArgumentPtr &lhsChild,
const ArgumentPtr &rhsChild);

static ArgumentPtr simplifyNegations(const IFunction &func, const ArgumentPtr &lhsChild, const ArgumentPtr &rhsChild);

Expand Down
7 changes: 5 additions & 2 deletions src/fintamath/expressions/polynomial/AndExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace fintamath {
AndExpression::AndExpression(const ArgumentsPtrVector &inChildren) : IPolynomExpressionCRTP(And(), inChildren) {
}

AndExpression::SimplifyFunctionsVector AndExpression::getFunctionsForSimplify() const {
AndExpression::SimplifyFunctionsVector AndExpression::getFunctionsForPreSimplify() const {
static const AndExpression::SimplifyFunctionsVector simplifyFunctions = {
&AndExpression::simplifyBooleans, //
&AndExpression::simplifyEqual, //
Expand All @@ -21,7 +21,10 @@ AndExpression::SimplifyFunctionsVector AndExpression::getFunctionsForSimplify()

AndExpression::SimplifyFunctionsVector AndExpression::getFunctionsForPostSimplify() const {
static const AndExpression::SimplifyFunctionsVector simplifyFunctions = {
&AndExpression::simplifyOr, //
&AndExpression::simplifyOr, //
&AndExpression::simplifyBooleans, //
&AndExpression::simplifyEqual, //
&AndExpression::simplifyNot, //
};
return simplifyFunctions;
}
Expand Down
2 changes: 1 addition & 1 deletion src/fintamath/expressions/polynomial/AndExpression.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class AndExpression : public IPolynomExpressionCRTP<AndExpression> {
}

protected:
SimplifyFunctionsVector getFunctionsForSimplify() const override;
SimplifyFunctionsVector getFunctionsForPreSimplify() const override;

SimplifyFunctionsVector getFunctionsForPostSimplify() const override;

Expand Down
20 changes: 9 additions & 11 deletions src/fintamath/expressions/polynomial/MulExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,27 +54,25 @@ std::string MulExpression::operatorChildToString(const ArgumentPtr &inChild, con
return (prevChild && *prevChild != Integer(-1) ? " " : "") + inChild->toString();
}

MulExpression::SimplifyFunctionsVector MulExpression::getFunctionsForSimplify() const {
static const MulExpression::SimplifyFunctionsVector simplifyFunctions = {
&MulExpression::simplifyDivisions, //
&MulExpression::mulRates, //
&MulExpression::simplifyNumbers, //
&MulExpression::simplifyNegations, //
};
return simplifyFunctions;
}

MulExpression::SimplifyFunctionsVector MulExpression::getFunctionsForPreSimplify() const {
static const MulExpression::SimplifyFunctionsVector simplifyFunctions = {
&MulExpression::simplifyCallFunction, //
&MulExpression::simplifyRationals, //
&MulExpression::simplifyDivisions, //
&MulExpression::mulRates, //
&MulExpression::simplifyNumbers, //
&MulExpression::simplifyNegations, //
};
return simplifyFunctions;
}

MulExpression::SimplifyFunctionsVector MulExpression::getFunctionsForPostSimplify() const {
static const MulExpression::SimplifyFunctionsVector simplifyFunctions = {
&MulExpression::mulPolynoms, //
&MulExpression::mulPolynoms, //
&MulExpression::simplifyDivisions, //
&MulExpression::mulRates, //
&MulExpression::simplifyNumbers, //
&MulExpression::simplifyNegations, //
};
return simplifyFunctions;
}
Expand Down
2 changes: 0 additions & 2 deletions src/fintamath/expressions/polynomial/MulExpression.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ class MulExpression : public IPolynomExpressionCRTP<MulExpression> {
protected:
std::string operatorChildToString(const ArgumentPtr &inChild, const ArgumentPtr &prevChild) const override;

SimplifyFunctionsVector getFunctionsForSimplify() const override;

SimplifyFunctionsVector getFunctionsForPreSimplify() const override;

SimplifyFunctionsVector getFunctionsForPostSimplify() const override;
Expand Down
7 changes: 5 additions & 2 deletions src/fintamath/expressions/polynomial/OrExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ ArgumentPtr OrExpression::postSimplify() const {
return simpl;
}

OrExpression::SimplifyFunctionsVector OrExpression::getFunctionsForSimplify() const {
OrExpression::SimplifyFunctionsVector OrExpression::getFunctionsForPreSimplify() const {
static const OrExpression::SimplifyFunctionsVector simplifyFunctions = {
&OrExpression::simplifyNot, //
&OrExpression::simplifyBooleans, //
Expand All @@ -65,7 +65,10 @@ OrExpression::SimplifyFunctionsVector OrExpression::getFunctionsForSimplify() co

OrExpression::SimplifyFunctionsVector OrExpression::getFunctionsForPostSimplify() const {
static const OrExpression::SimplifyFunctionsVector simplifyFunctions = {
&OrExpression::simplifyAnd, //
&OrExpression::simplifyAnd, //
&OrExpression::simplifyNot, //
&OrExpression::simplifyBooleans, //
&OrExpression::simplifyEqual, //
};
return simplifyFunctions;
}
Expand Down
2 changes: 1 addition & 1 deletion src/fintamath/expressions/polynomial/OrExpression.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class OrExpression : public IPolynomExpressionCRTP<OrExpression> {

ArgumentPtr postSimplify() const override;

SimplifyFunctionsVector getFunctionsForSimplify() const override;
SimplifyFunctionsVector getFunctionsForPreSimplify() const override;

SimplifyFunctionsVector getFunctionsForPostSimplify() const override;

Expand Down
5 changes: 3 additions & 2 deletions src/fintamath/expressions/unary/HyperbolicExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ HyperbolicExpression::HyperbolicExpression(const IFunction &inFunc, const Argume
: IUnaryExpressionCRTP(inFunc, inChild) {
}

HyperbolicExpression::SimplifyFunctionsVector HyperbolicExpression::getFunctionsForSimplify() const {
HyperbolicExpression::SimplifyFunctionsVector HyperbolicExpression::getFunctionsForPreSimplify() const {
static const HyperbolicExpression::SimplifyFunctionsVector simplifyFunctions = {
&HyperbolicExpression::oppositeFunctionsSimplify, //
};
Expand All @@ -24,7 +24,8 @@ HyperbolicExpression::SimplifyFunctionsVector HyperbolicExpression::getFunctions

HyperbolicExpression::SimplifyFunctionsVector HyperbolicExpression::getFunctionsForPostSimplify() const {
static const HyperbolicExpression::SimplifyFunctionsVector simplifyFunctions = {
&HyperbolicExpression::constantsSimplify, //
&HyperbolicExpression::constantsSimplify, //
&HyperbolicExpression::oppositeFunctionsSimplify, //
};
return simplifyFunctions;
}
Expand Down
2 changes: 1 addition & 1 deletion src/fintamath/expressions/unary/HyperbolicExpression.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class HyperbolicExpression : public IUnaryExpressionCRTP<HyperbolicExpression, t
}

protected:
SimplifyFunctionsVector getFunctionsForSimplify() const override;
SimplifyFunctionsVector getFunctionsForPreSimplify() const override;

SimplifyFunctionsVector getFunctionsForPostSimplify() const override;

Expand Down
Loading

0 comments on commit 865d854

Please sign in to comment.