Skip to content

Commit 1faa728

Browse files
committed
WIP #931 use Simplify to create better L'Hospitale results
- set LIMIT_LHOSPITAL_RECURSION_LIMIT = 20 to avoid StackOverflow
1 parent dd07b60 commit 1faa728

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

symja_android_library/matheclipse-core/src/main/java/org/matheclipse/core/basic/Config.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ public static Cache<IExpr, Object> getExprCache() {
309309
public static int INTEGRATE_RUBI_TIMELIMIT = 8;
310310

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

314314
/**
315315
* Flag for thread usage.

symja_android_library/matheclipse-core/src/main/java/org/matheclipse/core/builtin/SeriesFunctions.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ private static IExpr lHospitalesRule(IExpr numerator, IExpr denominator, LimitDa
476476
IExpr expr = engine.evalQuiet(F.Times(F.D(F.Power(numerator, exp), x),
477477
F.Power(F.D(denominator.base(), x), F.CN1)));
478478
if (expr.isTimes() && expr.leafCount() < Config.MAX_SIMPLIFY_TOGETHER_LEAFCOUNT) {
479-
expr = engine.evalQuiet(F.Expand(expr));
479+
expr = engine.evalQuiet(F.Simplify(expr));
480480
}
481481
expr = evalLimit(expr, data, engine);
482482
if (expr.isNumber()) {
@@ -491,6 +491,9 @@ private static IExpr lHospitalesRule(IExpr numerator, IExpr denominator, LimitDa
491491
}
492492
IExpr expr =
493493
engine.evalQuiet(F.Times(F.D(numerator, x), F.Power(F.D(denominator, x), F.CN1)));
494+
if (expr.isTimes() && expr.leafCount() < Config.MAX_SIMPLIFY_TOGETHER_LEAFCOUNT) {
495+
expr = engine.evalQuiet(F.Simplify(expr));
496+
}
494497
return evalLimit(expr, data, engine);
495498
} catch (RecursionLimitExceeded rle) {
496499
engine.setRecursionLimit(recursionLimit);

0 commit comments

Comments
 (0)