diff --git a/apps/regression/model/cubic_model.cpp b/apps/regression/model/cubic_model.cpp index 4acbd07b2..5a2e4671e 100644 --- a/apps/regression/model/cubic_model.cpp +++ b/apps/regression/model/cubic_model.cpp @@ -39,10 +39,6 @@ ExpressionLayout * CubicModel::layout() { } Expression * CubicModel::simplifiedExpression(double * modelCoefficients, Poincare::Context * context) { - if (m_expression != nullptr) { - delete m_expression; - m_expression = nullptr; - } double a = modelCoefficients[0]; double b = modelCoefficients[1]; double c = modelCoefficients[2]; @@ -67,9 +63,9 @@ Expression * CubicModel::simplifiedExpression(double * modelCoefficients, Poinca false); Expression * dExpression = new Decimal(d); Expression * const operands[] = {ax3Expression, bx2Expression, cxExpression, dExpression}; - m_expression = new Addition(operands, 4, false); - Expression::Simplify(&m_expression, *context); - return m_expression; + Expression * result = new Addition(operands, 4, false); + Expression::Simplify(&result, *context); + return result; } double CubicModel::evaluate(double * modelCoefficients, double x) const { diff --git a/apps/regression/model/cubic_model.h b/apps/regression/model/cubic_model.h index 2c3359352..ff7405f3b 100644 --- a/apps/regression/model/cubic_model.h +++ b/apps/regression/model/cubic_model.h @@ -8,15 +8,13 @@ namespace Regression { class CubicModel : public Model { public: - CubicModel() : m_expression(nullptr) {} + using Model::Model; Poincare::ExpressionLayout * layout() override; Poincare::Expression * simplifiedExpression(double * modelCoefficients, Poincare::Context * context) override; I18n::Message formulaMessage() const override { return I18n::Message::CubicRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override; int numberOfCoefficients() const override { return 4; } -private: - Poincare::Expression * m_expression; }; } diff --git a/apps/regression/model/quadratic_model.cpp b/apps/regression/model/quadratic_model.cpp index 6f4989e2e..33ec1ddfa 100644 --- a/apps/regression/model/quadratic_model.cpp +++ b/apps/regression/model/quadratic_model.cpp @@ -31,10 +31,6 @@ ExpressionLayout * QuadraticModel::layout() { } Expression * QuadraticModel::simplifiedExpression(double * modelCoefficients, Poincare::Context * context) { - if (m_expression != nullptr) { - delete m_expression; - m_expression = nullptr; - } double a = modelCoefficients[0]; double b = modelCoefficients[1]; double c = modelCoefficients[2]; @@ -51,9 +47,9 @@ Expression * QuadraticModel::simplifiedExpression(double * modelCoefficients, Po false); Expression * cExpression = new Decimal(c); Expression * const operands[] = {ax2Expression, bxExpression, cExpression}; - m_expression = new Addition(operands, 3, false); - Expression::Simplify(&m_expression, *context); - return m_expression; + Expression * result = new Addition(operands, 3, false); + Expression::Simplify(&result, *context); + return result; } double QuadraticModel::evaluate(double * modelCoefficients, double x) const { diff --git a/apps/regression/model/quadratic_model.h b/apps/regression/model/quadratic_model.h index a6e8ba9b1..c8481a87a 100644 --- a/apps/regression/model/quadratic_model.h +++ b/apps/regression/model/quadratic_model.h @@ -8,15 +8,14 @@ namespace Regression { class QuadraticModel : public Model { public: - QuadraticModel() : m_expression(nullptr) {} + using Model::Model; Poincare::ExpressionLayout * layout() override; Poincare::Expression * simplifiedExpression(double * modelCoefficients, Poincare::Context * context) override; I18n::Message formulaMessage() const override { return I18n::Message::QuadraticRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override; int numberOfCoefficients() const override { return 3; } -private: - Poincare::Expression * m_expression;}; +}; } diff --git a/apps/regression/model/quartic_model.cpp b/apps/regression/model/quartic_model.cpp index 8d9a81b31..883a29f4e 100644 --- a/apps/regression/model/quartic_model.cpp +++ b/apps/regression/model/quartic_model.cpp @@ -47,10 +47,6 @@ ExpressionLayout * QuarticModel::layout() { } Expression * QuarticModel::simplifiedExpression(double * modelCoefficients, Poincare::Context * context) { - if (m_expression != nullptr) { - delete m_expression; - m_expression = nullptr; - } double a = modelCoefficients[0]; double b = modelCoefficients[1]; double c = modelCoefficients[2]; @@ -83,9 +79,9 @@ Expression * QuarticModel::simplifiedExpression(double * modelCoefficients, Poin false); Expression * eExpression = new Decimal(e); Expression * const operands[] = {ax4Expression, bx3Expression, cx2Expression, dxExpression, eExpression}; - m_expression = new Addition(operands, 5, false); - Expression::Simplify(&m_expression, *context); - return m_expression; + Expression * result = new Addition(operands, 5, false); + Expression::Simplify(&result, *context); + return result; } double QuarticModel::evaluate(double * modelCoefficients, double x) const { diff --git a/apps/regression/model/quartic_model.h b/apps/regression/model/quartic_model.h index 897bbc4ed..6c1d2ac46 100644 --- a/apps/regression/model/quartic_model.h +++ b/apps/regression/model/quartic_model.h @@ -8,15 +8,13 @@ namespace Regression { class QuarticModel : public Model { public: - QuarticModel() : m_expression(nullptr) {} + using Model::Model; Poincare::ExpressionLayout * layout() override; Poincare::Expression * simplifiedExpression(double * modelCoefficients, Poincare::Context * context) override; I18n::Message formulaMessage() const override { return I18n::Message::QuarticRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override; int numberOfCoefficients() const override { return 5; } -private: - Poincare::Expression * m_expression; }; } diff --git a/apps/regression/model/trigonometric_model.cpp b/apps/regression/model/trigonometric_model.cpp index 8bdd97ea3..8bcaf543e 100644 --- a/apps/regression/model/trigonometric_model.cpp +++ b/apps/regression/model/trigonometric_model.cpp @@ -33,10 +33,6 @@ ExpressionLayout * TrigonometricModel::layout() { } Expression * TrigonometricModel::simplifiedExpression(double * modelCoefficients, Poincare::Context * context) { - if (m_expression != nullptr) { - delete m_expression; - m_expression = nullptr; - } double a = modelCoefficients[0]; double b = modelCoefficients[1]; double c = modelCoefficients[2]; @@ -53,9 +49,9 @@ Expression * TrigonometricModel::simplifiedExpression(double * modelCoefficients false); Expression * asinExpression = new Multiplication(aExpression, sinExpression, false); Expression * dExpression = new Decimal(d); - m_expression = new Addition(asinExpression, dExpression, false); - Expression::Simplify(&m_expression, *context); - return m_expression; + Expression * result = new Addition(asinExpression, dExpression, false); + Expression::Simplify(&result, *context); + return result; } double TrigonometricModel::evaluate(double * modelCoefficients, double x) const { diff --git a/apps/regression/model/trigonometric_model.h b/apps/regression/model/trigonometric_model.h index ed64d5b9f..8d8602f67 100644 --- a/apps/regression/model/trigonometric_model.h +++ b/apps/regression/model/trigonometric_model.h @@ -8,15 +8,13 @@ namespace Regression { class TrigonometricModel : public Model { public: - TrigonometricModel() : m_expression(nullptr) {} + using Model::Model; Poincare::ExpressionLayout * layout() override; Poincare::Expression * simplifiedExpression(double * modelCoefficients, Poincare::Context * context) override; I18n::Message formulaMessage() const override { return I18n::Message::TrigonometricRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override; int numberOfCoefficients() const override { return 4; } -private: - Poincare::Expression * m_expression; }; }