You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ah, so it returned a limit. Correct, I see. But for the other cases... well, there definitely are limits, and it didn't find it. I see. That's kind of bug, but... as well as a missing feature
Two causes sat on top of each other. The gate at the top of ComputeLimit admits ContinuousNode only, and a Piecewise is not one, so the descent's Piecewise case was never reached. And that case was dead anyway: it tested allLims.Select(c => c.lim is null).Any(), which is Any() with no predicate -- "is the sequence non-empty" -- so it always returned null. Even had it run, it built a piecewise of the cases' limits carrying predicates that still speak about the variable the limit had just removed.
It now picks the case that holds near the destination, reading each predicate from the sign its comparisons keep on the way in. With the piecewise from your screenshot:
lim x->0- => -1
lim x->0+ => 1
lim x->0 => NaN (the two sides disagree, so there is no limit)
lim x->-456 => -1
lim x->123 => 1
Activity
WhiteBlackGoose commentedon Oct 29, 2021
Um... I'm not sure... if this even has a limit, since there's a jump discontinuity at x = 0
WhiteBlackGoose commentedon Oct 29, 2021
Ah, so it returned a limit. Correct, I see. But for the other cases... well, there definitely are limits, and it didn't find it. I see. That's kind of bug, but... as well as a missing feature
Answer the limits that were left unevaluated, and un-invert a quotient (
Rafael-SOWNet commentedon Aug 5, 2026
Fixed in #714, on master now.
Two causes sat on top of each other. The gate at the top of
ComputeLimitadmitsContinuousNodeonly, and aPiecewiseis not one, so the descent'sPiecewisecase was never reached. And that case was dead anyway: it testedallLims.Select(c => c.lim is null).Any(), which isAny()with no predicate -- "is the sequence non-empty" -- so it always returned null. Even had it run, it built a piecewise of the cases' limits carrying predicates that still speak about the variable the limit had just removed.It now picks the case that holds near the destination, reading each predicate from the sign its comparisons keep on the way in. With the piecewise from your screenshot:
Closing.
Drop unreachable piecewise cases and merge repeated ones (#327) (#790)
Point AGENTS.md at work that is still open, and at keeping the harness (