diff --git a/poincare/src/function.cpp b/poincare/src/function.cpp index 425471bde..a541c46a2 100644 --- a/poincare/src/function.cpp +++ b/poincare/src/function.cpp @@ -3,7 +3,6 @@ #include #include #include - #include #include #include @@ -80,6 +79,10 @@ Evaluation FunctionNode::approximate(DoublePrecision p, Context * contex template Evaluation FunctionNode::templatedApproximate(Context * context, Preferences::ComplexFormat complexFormat, Preferences::AngleUnit angleUnit) const { + if (childAtIndex(0)->approximate((T)1, context, complexFormat, angleUnit).isUndefined()) { + return Complex::Undefined(); + } + Function f(this); Expression e = SymbolAbstract::Expand(f, context, true); if (e.isUninitialized()) { @@ -112,6 +115,9 @@ Expression Function::replaceSymbolWithExpression(const SymbolAbstract & symbol, } Expression Function::shallowReduce(ExpressionNode::ReductionContext reductionContext) { + if (childAtIndex(0).isUndefined()) { + return replaceWithUndefinedInPlace(); + } Expression result = SymbolAbstract::Expand(*this, reductionContext.context(), true); if (result.isUninitialized()) { if (reductionContext.symbolicComputation()) {