[poincare] Template for double

Change-Id: I7404bd5cefc9ef78a5dbd572c3874a557cded28e
This commit is contained in:
Émilie Feral
2017-08-03 13:05:46 +02:00
parent 05d2b83f92
commit 82e212e771
184 changed files with 2062 additions and 1475 deletions

View File

@@ -99,12 +99,13 @@ bool Function::isEmpty() {
return m_text[0] == 0;
}
float Function::evaluateAtAbscissa(float x, Poincare::Context * context) const {
Poincare::VariableContext variableContext = Poincare::VariableContext(symbol(), context);
template<typename T>
T Function::templatedEvaluateAtAbscissa(T x, Poincare::Context * context) const {
Poincare::VariableContext<T> variableContext = Poincare::VariableContext<T>(symbol(), context);
Poincare::Symbol xSymbol = Poincare::Symbol(symbol());
Poincare::Complex e = Poincare::Complex::Float(x);
Poincare::Complex<T> e = Poincare::Complex<T>::Float(x);
variableContext.setExpressionForSymbolName(&e, &xSymbol);
return expression()->approximate(variableContext);
return expression()->approximate<T>(variableContext);
}
void Function::tidy() {
@@ -119,3 +120,6 @@ void Function::tidy() {
}
}
template float Shared::Function::templatedEvaluateAtAbscissa<float>(float, Poincare::Context*) const;
template double Shared::Function::templatedEvaluateAtAbscissa<double>(double, Poincare::Context*) const;