Skip to content

Commit

Permalink
WIP #931 use Simplify to create better L'Hospitale results
Browse files Browse the repository at this point in the history
- set LIMIT_LHOSPITAL_RECURSION_LIMIT = 20 to avoid StackOverflow
  • Loading branch information
axkr committed Mar 15, 2024
1 parent dd07b60 commit 1faa728
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ public static Cache<IExpr, Object> getExprCache() {
public static int INTEGRATE_RUBI_TIMELIMIT = 8;

/** Define the recursion limit for <code>Limit#lHospitalesRule()</code> method. */
public static int LIMIT_LHOSPITAL_RECURSION_LIMIT = 128;
public static int LIMIT_LHOSPITAL_RECURSION_LIMIT = 20;

/**
* Flag for thread usage.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ private static IExpr lHospitalesRule(IExpr numerator, IExpr denominator, LimitDa
IExpr expr = engine.evalQuiet(F.Times(F.D(F.Power(numerator, exp), x),
F.Power(F.D(denominator.base(), x), F.CN1)));
if (expr.isTimes() && expr.leafCount() < Config.MAX_SIMPLIFY_TOGETHER_LEAFCOUNT) {
expr = engine.evalQuiet(F.Expand(expr));
expr = engine.evalQuiet(F.Simplify(expr));
}
expr = evalLimit(expr, data, engine);
if (expr.isNumber()) {
Expand All @@ -491,6 +491,9 @@ private static IExpr lHospitalesRule(IExpr numerator, IExpr denominator, LimitDa
}
IExpr expr =
engine.evalQuiet(F.Times(F.D(numerator, x), F.Power(F.D(denominator, x), F.CN1)));
if (expr.isTimes() && expr.leafCount() < Config.MAX_SIMPLIFY_TOGETHER_LEAFCOUNT) {
expr = engine.evalQuiet(F.Simplify(expr));
}
return evalLimit(expr, data, engine);
} catch (RecursionLimitExceeded rle) {
engine.setRecursionLimit(recursionLimit);
Expand Down

0 comments on commit 1faa728

Please sign in to comment.