From 76cbd2678d7adca86a178ea241cc74b4521eeeab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Fri, 24 Nov 2017 12:06:35 +0100 Subject: [PATCH] [poincare] Change names: approximate->approximateToScalar Change-Id: I701451b35909bb577dd729e0ea76a405b9543f23 --- apps/graph/cartesian_function.cpp | 2 +- apps/probability/calculation_controller.cpp | 2 +- apps/sequence/sequence.cpp | 18 +++++++++--------- .../editable_cell_table_view_controller.cpp | 2 +- apps/shared/float_parameter_controller.cpp | 2 +- apps/shared/function.cpp | 2 +- poincare/include/poincare/expression.h | 4 ++-- poincare/src/expression.cpp | 14 +++++++------- poincare/src/expression_debug.cpp | 2 +- poincare/src/power.cpp | 4 ++-- poincare/src/trigonometry.cpp | 8 ++++---- 11 files changed, 30 insertions(+), 30 deletions(-) diff --git a/apps/graph/cartesian_function.cpp b/apps/graph/cartesian_function.cpp index 1f7077865..50359d6ec 100644 --- a/apps/graph/cartesian_function.cpp +++ b/apps/graph/cartesian_function.cpp @@ -20,7 +20,7 @@ double CartesianFunction::approximateDerivative(double x, Poincare::Context * co Poincare::Complex abscissa = Poincare::Complex::Float(x); Poincare::Expression * args[2] = {expression(), &abscissa}; Poincare::Derivative derivative(args, true); - return derivative.approximate(*context); + return derivative.approximateToScalar(*context); } char CartesianFunction::symbol() const { diff --git a/apps/probability/calculation_controller.cpp b/apps/probability/calculation_controller.cpp index c0fbbcc8f..be820cc8e 100644 --- a/apps/probability/calculation_controller.cpp +++ b/apps/probability/calculation_controller.cpp @@ -218,7 +218,7 @@ bool CalculationController::textFieldShouldFinishEditing(TextField * textField, bool CalculationController::textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) { App * probaApp = (App *)app(); Context * globalContext = probaApp->container()->globalContext(); - double floatBody = Expression::approximate(text, *globalContext); + double floatBody = Expression::approximateToScalar(text, *globalContext); if (std::isnan(floatBody) || std::isinf(floatBody)) { app()->displayWarning(I18n::Message::UndefinedValue); return false; diff --git a/apps/sequence/sequence.cpp b/apps/sequence/sequence.cpp index 2e8b1aca0..3f1089d03 100644 --- a/apps/sequence/sequence.cpp +++ b/apps/sequence/sequence.cpp @@ -282,18 +282,18 @@ T Sequence::templatedEvaluateAtAbscissa(T x, Poincare::Context * context) const } if (n == 0) { setBufferIndexValue(0,0); - setBufferValue(firstInitialConditionExpression()->approximate(*context), 0); + setBufferValue(firstInitialConditionExpression()->approximateToScalar(*context), 0); return bufferValue(0); } LocalContext subContext = LocalContext(context); Poincare::Symbol nSymbol(symbol()); int start = indexBuffer(0) < 0 || indexBuffer(0) > n ? 0 : indexBuffer(0); - T un = indexBuffer(0) < 0 || indexBuffer(0) > n ? firstInitialConditionExpression()->approximate(*context) : bufferValue(0); + T un = indexBuffer(0) < 0 || indexBuffer(0) > n ? firstInitialConditionExpression()->approximateToScalar(*context) : bufferValue(0); for (int i = start; i < n; i++) { subContext.setValueForSequenceRank(un, name(), 0); Poincare::Complex e = Poincare::Complex::Float(i); subContext.setExpressionForSymbolName(&e, &nSymbol, subContext); - un = expression()->approximate(subContext); + un = expression()->approximateToScalar(subContext); } setBufferValue(un, 0); setBufferIndexValue(n, 0); @@ -305,27 +305,27 @@ T Sequence::templatedEvaluateAtAbscissa(T x, Poincare::Context * context) const return NAN; } if (n == 0) { - return firstInitialConditionExpression()->approximate(*context); + return firstInitialConditionExpression()->approximateToScalar(*context); } if (n == 1) { setBufferIndexValue(0, 0); - setBufferValue(firstInitialConditionExpression()->approximate(*context), 0); + setBufferValue(firstInitialConditionExpression()->approximateToScalar(*context), 0); setBufferIndexValue(1, 1); - setBufferValue(secondInitialConditionExpression()->approximate(*context), 1); + setBufferValue(secondInitialConditionExpression()->approximateToScalar(*context), 1); return bufferValue(1); } LocalContext subContext = LocalContext(context); Poincare::Symbol nSymbol(symbol()); int start = indexBuffer(0) >= 0 && indexBuffer(0) < n && indexBuffer(1) > 0 && indexBuffer(1) <= n && indexBuffer(0) + 1 == indexBuffer(1) ? indexBuffer(0) : 0; - T un = indexBuffer(0) >= 0 && indexBuffer(0) < n && indexBuffer(1) > 0 && indexBuffer(1) <= n && indexBuffer(0) + 1 == indexBuffer(1) ? bufferValue(0) : firstInitialConditionExpression()->approximate(*context); - T un1 = indexBuffer(0) >= 0 && indexBuffer(0) < n && indexBuffer(1) > 0 && indexBuffer(1) <= n && indexBuffer(0) + 1 == indexBuffer(1) ? bufferValue(1) : secondInitialConditionExpression()->approximate(*context); + T un = indexBuffer(0) >= 0 && indexBuffer(0) < n && indexBuffer(1) > 0 && indexBuffer(1) <= n && indexBuffer(0) + 1 == indexBuffer(1) ? bufferValue(0) : firstInitialConditionExpression()->approximateToScalar(*context); + T un1 = indexBuffer(0) >= 0 && indexBuffer(0) < n && indexBuffer(1) > 0 && indexBuffer(1) <= n && indexBuffer(0) + 1 == indexBuffer(1) ? bufferValue(1) : secondInitialConditionExpression()->approximateToScalar(*context); for (int i = start; i < n-1; i++) { subContext.setValueForSequenceRank(un, name(), 0); subContext.setValueForSequenceRank(un1, name(), 1); Poincare::Complex e = Poincare::Complex::Float(i); subContext.setExpressionForSymbolName(&e, &nSymbol, subContext); un = un1; - un1 = expression()->approximate(subContext); + un1 = expression()->approximateToScalar(subContext); } setBufferValue(un, 0); setBufferIndexValue(n-1, 0); diff --git a/apps/shared/editable_cell_table_view_controller.cpp b/apps/shared/editable_cell_table_view_controller.cpp index 18337bcbe..3ef8b3eaa 100644 --- a/apps/shared/editable_cell_table_view_controller.cpp +++ b/apps/shared/editable_cell_table_view_controller.cpp @@ -24,7 +24,7 @@ bool EditableCellTableViewController::textFieldShouldFinishEditing(TextField * t bool EditableCellTableViewController::textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) { AppsContainer * appsContainer = ((TextFieldDelegateApp *)app())->container(); Context * globalContext = appsContainer->globalContext(); - double floatBody = Expression::approximate(text, *globalContext); + double floatBody = Expression::approximateToScalar(text, *globalContext); if (std::isnan(floatBody) || std::isinf(floatBody)) { app()->displayWarning(I18n::Message::UndefinedValue); return false; diff --git a/apps/shared/float_parameter_controller.cpp b/apps/shared/float_parameter_controller.cpp index 04f925f6c..f4cc97c54 100644 --- a/apps/shared/float_parameter_controller.cpp +++ b/apps/shared/float_parameter_controller.cpp @@ -119,7 +119,7 @@ bool FloatParameterController::textFieldShouldFinishEditing(TextField * textFiel bool FloatParameterController::textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) { AppsContainer * appsContainer = ((TextFieldDelegateApp *)app())->container(); Context * globalContext = appsContainer->globalContext(); - double floatBody = Expression::approximate(text, *globalContext); + double floatBody = Expression::approximateToScalar(text, *globalContext); if (std::isnan(floatBody) || std::isinf(floatBody)) { app()->displayWarning(I18n::Message::UndefinedValue); return false; diff --git a/apps/shared/function.cpp b/apps/shared/function.cpp index 36bca4846..ffe6b113b 100644 --- a/apps/shared/function.cpp +++ b/apps/shared/function.cpp @@ -105,7 +105,7 @@ T Function::templatedEvaluateAtAbscissa(T x, Poincare::Context * context) const Poincare::Symbol xSymbol(symbol()); Poincare::Complex e = Poincare::Complex::Float(x); variableContext.setExpressionForSymbolName(&e, &xSymbol, variableContext); - return expression()->approximate(variableContext); + return expression()->approximateToScalar(variableContext); } void Function::tidy() { diff --git a/poincare/include/poincare/expression.h b/poincare/include/poincare/expression.h index 318d3b1b6..7cef1dbec 100644 --- a/poincare/include/poincare/expression.h +++ b/poincare/include/poincare/expression.h @@ -214,8 +214,8 @@ public: * The function evaluate creates a new expression and thus mallocs memory. * Do not forget to delete the new expression to avoid leaking. */ template Expression * evaluate(Context& context, AngleUnit angleUnit = AngleUnit::Default) const; - template T approximate(Context& context, AngleUnit angleUnit = AngleUnit::Default) const; - template static T approximate(const char * text, Context& context, AngleUnit angleUnit = AngleUnit::Default); + template T approximateToScalar(Context& context, AngleUnit angleUnit = AngleUnit::Default) const; + template static T approximateToScalar(const char * text, Context& context, AngleUnit angleUnit = AngleUnit::Default); protected: /* Constructor */ Expression() : m_parent(nullptr) {} diff --git a/poincare/src/expression.cpp b/poincare/src/expression.cpp index e30cccbed..36d3f1544 100644 --- a/poincare/src/expression.cpp +++ b/poincare/src/expression.cpp @@ -262,7 +262,7 @@ template Expression * Expression::evaluate(Context& context, AngleUn } } -template T Expression::approximate(Context& context, AngleUnit angleUnit) const { +template T Expression::approximateToScalar(Context& context, AngleUnit angleUnit) const { Expression * evaluation = evaluate(context, angleUnit); assert(evaluation->type() == Type::Complex || evaluation->type() == Type::Matrix); T result = NAN; @@ -278,9 +278,9 @@ template T Expression::approximate(Context& context, AngleUnit angle return result; } -template T Expression::approximate(const char * text, Context& context, AngleUnit angleUnit) { +template T Expression::approximateToScalar(const char * text, Context& context, AngleUnit angleUnit) { Expression * exp = parse(text); - T result = exp->approximate(context, angleUnit); + T result = exp->approximateToScalar(context, angleUnit); delete exp; return result; } @@ -294,9 +294,9 @@ template T Expression::epsilon() { template Poincare::Expression * Poincare::Expression::evaluate(Context& context, AngleUnit angleUnit) const; template Poincare::Expression * Poincare::Expression::evaluate(Context& context, AngleUnit angleUnit) const; -template double Poincare::Expression::approximate(char const*, Poincare::Context&, Poincare::Expression::AngleUnit); -template float Poincare::Expression::approximate(char const*, Poincare::Context&, Poincare::Expression::AngleUnit); -template double Poincare::Expression::approximate(Poincare::Context&, Poincare::Expression::AngleUnit) const; -template float Poincare::Expression::approximate(Poincare::Context&, Poincare::Expression::AngleUnit) const; +template double Poincare::Expression::approximateToScalar(char const*, Poincare::Context&, Poincare::Expression::AngleUnit); +template float Poincare::Expression::approximateToScalar(char const*, Poincare::Context&, Poincare::Expression::AngleUnit); +template double Poincare::Expression::approximateToScalar(Poincare::Context&, Poincare::Expression::AngleUnit) const; +template float Poincare::Expression::approximateToScalar(Poincare::Context&, Poincare::Expression::AngleUnit) const; template double Poincare::Expression::epsilon(); template float Poincare::Expression::epsilon(); diff --git a/poincare/src/expression_debug.cpp b/poincare/src/expression_debug.cpp index 527317f2f..956522d00 100644 --- a/poincare/src/expression_debug.cpp +++ b/poincare/src/expression_debug.cpp @@ -60,7 +60,7 @@ void print_expression(const Expression * e, int indentationLevel) { break; case Expression::Type::Decimal: std::cout << "Decimal("; - std::cout << e->approximate(context, Expression::AngleUnit::Radian); + std::cout << e->approximateToScalar(context, Expression::AngleUnit::Radian); std::cout << ")"; break; case Expression::Type::Derivative: diff --git a/poincare/src/power.cpp b/poincare/src/power.cpp index cef3247cc..0566c1041 100644 --- a/poincare/src/power.cpp +++ b/poincare/src/power.cpp @@ -240,8 +240,8 @@ Expression * Power::shallowReduce(Context& context, AngleUnit angleUnit) { } // p^q with p, q rationals if (!letPowerAtRoot && operand(1)->type() == Type::Rational) { - double p = a->approximate(context, angleUnit); - double q = operand(1)->approximate(context, angleUnit); + double p = a->approximateToScalar(context, angleUnit); + double q = operand(1)->approximateToScalar(context, angleUnit); double approx = std::pow(std::fabs(p), std::fabs(q)); if (std::isinf(approx) || std::isnan(approx) || std::fabs(approx)> 1E100) { return this; diff --git a/poincare/src/trigonometry.cpp b/poincare/src/trigonometry.cpp index 753f25b75..633029590 100644 --- a/poincare/src/trigonometry.cpp +++ b/poincare/src/trigonometry.cpp @@ -22,7 +22,7 @@ Expression * Trigonometry::shallowReduceDirectFunction(Expression * e, Context& } Expression::Type correspondingType = e->type() == Expression::Type::Cosine ? Expression::Type::ArcCosine : (e->type() == Expression::Type::Sine ? Expression::Type::ArcSine : Expression::Type::ArcTangent); if (e->operand(0)->type() == correspondingType) { - float trigoOp = e->operand(0)->operand(0)->approximate(context, angleUnit); + float trigoOp = e->operand(0)->operand(0)->approximateToScalar(context, angleUnit); if (e->type() == Expression::Type::Tangent || (trigoOp >= -1.0f && trigoOp <= 1.0f)) { return e->replaceWith(e->editableOperand(0)->editableOperand(0), true); } @@ -83,7 +83,7 @@ bool Trigonometry::ExpressionIsEquivalentToTangent(const Expression * e) { Expression * Trigonometry::shallowReduceInverseFunction(Expression * e, Context& context, Expression::AngleUnit angleUnit) { assert(e->type() == Expression::Type::ArcCosine || e->type() == Expression::Type::ArcSine || e->type() == Expression::Type::ArcTangent); if (e->type() != Expression::Type::ArcTangent) { - float approxOp = e->operand(0)->approximate(context, angleUnit); + float approxOp = e->operand(0)->approximateToScalar(context, angleUnit); if (approxOp > 1.0f || approxOp < -1.0f) { return e->replaceWith(new Undefined(), true); } @@ -91,7 +91,7 @@ Expression * Trigonometry::shallowReduceInverseFunction(Expression * e, Context& Expression::Type correspondingType = e->type() == Expression::Type::ArcCosine ? Expression::Type::Cosine : (e->type() == Expression::Type::ArcSine ? Expression::Type::Sine : Expression::Type::Tangent); float pi = angleUnit == Expression::AngleUnit::Radian ? M_PI : 180; if (e->operand(0)->type() == correspondingType) { - float trigoOp = e->operand(0)->operand(0)->approximate(context, angleUnit); + float trigoOp = e->operand(0)->operand(0)->approximateToScalar(context, angleUnit); if ((e->type() == Expression::Type::ArcCosine && trigoOp >= 0.0f && trigoOp <= pi) || (e->type() == Expression::Type::ArcSine && trigoOp >= -pi/2.0f && trigoOp <= pi/2.0f) || (e->type() == Expression::Type::ArcTangent && trigoOp >= -pi/2.0f && trigoOp <= pi/2.0f)) { @@ -100,7 +100,7 @@ Expression * Trigonometry::shallowReduceInverseFunction(Expression * e, Context& } // Special case for arctan(sin(x)/cos(x)) if (e->type() == Expression::Type::ArcTangent && ExpressionIsEquivalentToTangent(e->operand(0))) { - float trigoOp = e->operand(0)->operand(1)->operand(0)->approximate(context, angleUnit); + float trigoOp = e->operand(0)->operand(1)->operand(0)->approximateToScalar(context, angleUnit); if (trigoOp >= -pi/2.0f && trigoOp <= pi/2.0f) { return e->replaceWith(e->editableOperand(0)->editableOperand(1)->editableOperand(0), true); }