[apps/reg] Display correct formula in banner view

This commit is contained in:
Léa Saviot
2018-06-07 17:09:29 +02:00
committed by Émilie Feral
parent 799bbfbf05
commit f885923957
13 changed files with 14 additions and 3 deletions

View File

@@ -39,6 +39,7 @@ i18n_files += $(addprefix apps/regression/,\
base.es.i18n\
base.fr.i18n\
base.pt.i18n\
base.universal.i18n\
)
app_images += apps/regression/regression_icon.png

View File

@@ -82,8 +82,8 @@ void GraphController::reloadBannerView() {
return;
}
m_bannerView.setMessageAtIndex(I18n::Message::RegressionFormula, 3);
Model * model = m_store->modelForSeries(selectedSeriesIndex());
m_bannerView.setMessageAtIndex(model->formulaMessage(), 3);
char buffer[k_maxNumberOfCharacters + PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits)];
int numberOfChar = 0;
const char * legend = " P(";

View File

@@ -10,6 +10,7 @@ class CubicModel : public Model {
public:
using Model::Model;
Poincare::ExpressionLayout * layout() override;
I18n::Message formulaMessage() const override { return I18n::Message::CubicRegressionFormula; }
double evaluate(double * modelCoefficients, double x) const override;
double levelSet(double * modelCoefficients, double y) const override;
double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override;

View File

@@ -10,6 +10,7 @@ class ExponentialModel : public Model {
public:
using Model::Model;
Poincare::ExpressionLayout * layout() override;
I18n::Message formulaMessage() const override { return I18n::Message::ExponentialRegressionFormula; }
double evaluate(double * modelCoefficients, double x) const override;
double levelSet(double * modelCoefficients, double y) const override;
double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override;

View File

@@ -10,6 +10,7 @@ class LinearModel : public Model {
public:
using Model::Model;
Poincare::ExpressionLayout * layout() override;
I18n::Message formulaMessage() const override { return I18n::Message::LinearRegressionFormula; }
double evaluate(double * modelCoefficients, double x) const override;
double levelSet(double * modelCoefficients, double y) const override;
virtual void fit(Store * store, int series, double * modelCoefficients, Poincare::Context * context) override;

View File

@@ -10,6 +10,7 @@ class LogarithmicModel : public Model {
public:
using Model::Model;
Poincare::ExpressionLayout * layout() override;
I18n::Message formulaMessage() const override { return I18n::Message::LogarithmicRegressionFormula; }
double evaluate(double * modelCoefficients, double x) const override;
double levelSet(double * modelCoefficients, double y) const override;
double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override;

View File

@@ -10,6 +10,7 @@ class LogisticModel : public Model {
public:
using Model::Model;
Poincare::ExpressionLayout * layout() override;
I18n::Message formulaMessage() const override { return I18n::Message::LogisticRegressionFormula; }
double evaluate(double * modelCoefficients, double x) const override;
double levelSet(double * modelCoefficients, double y) const override;
double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override;

View File

@@ -2,6 +2,7 @@
#define REGRESSION_MODEL_H
#include <stdint.h>
#include "../../i18n.h"
#include <poincare/context.h>
#include <poincare/expression.h>
@@ -26,6 +27,7 @@ public:
static constexpr int k_maxNumberOfCoefficients = 5;
virtual ~Model() = default;
virtual Poincare::ExpressionLayout * layout() = 0;
virtual I18n::Message formulaMessage() const = 0;
virtual double evaluate(double * modelCoefficients, double x) const = 0;
virtual double levelSet(double * modelCoefficients, double y) const = 0;
virtual void fit(Store * store, int series, double * modelCoefficients, Poincare::Context * context);

View File

@@ -10,6 +10,7 @@ class PowerModel : public Model {
public:
using Model::Model;
Poincare::ExpressionLayout * layout() override;
I18n::Message formulaMessage() const override { return I18n::Message::PowerRegressionFormula; }
double evaluate(double * modelCoefficients, double x) const override;
double levelSet(double * modelCoefficients, double y) const override;
double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override;

View File

@@ -10,6 +10,7 @@ class QuadraticModel : public Model {
public:
using Model::Model;
Poincare::ExpressionLayout * layout() override;
I18n::Message formulaMessage() const override { return I18n::Message::QuadraticRegressionFormula; }
double evaluate(double * modelCoefficients, double x) const override;
double levelSet(double * modelCoefficients, double y) const override;
double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override;

View File

@@ -10,6 +10,7 @@ class QuarticModel : public Model {
public:
using Model::Model;
Poincare::ExpressionLayout * layout() override;
I18n::Message formulaMessage() const override { return I18n::Message::QuarticRegressionFormula; }
double evaluate(double * modelCoefficients, double x) const override;
double levelSet(double * modelCoefficients, double y) const override;
double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override;

View File

@@ -10,6 +10,7 @@ class TrigonometricModel : public Model {
public:
using Model::Model;
Poincare::ExpressionLayout * layout() override;
I18n::Message formulaMessage() const override { return I18n::Message::TrigonometricRegressionFormula; }
double evaluate(double * modelCoefficients, double x) const override;
double levelSet(double * modelCoefficients, double y) const override;
double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override;

View File

@@ -51,7 +51,6 @@ QuoCommandWithArg = "quo(p,q)"
RandintCommandWithArg = "randint(a,b)"
RandomCommandWithArg = "random()"
ReCommandWithArg = "re(z)"
RegressionFormula = " D: y=ax+b "
RemCommandWithArg = "rem(p,q)"
RightIntegralFirstLegend = "P("
RightIntegralSecondLegend = "≤X)="