Repository navigation
Ask an exponential of the reciprocal of a linear over another linear in u = 1/(c + d x) first - #2010
Merged
Rafael-SOWNet merged 1 commit intoOct 21, 2026
Conversation
…in u = 1/(c + d x) first #1950's SolveAnExponentialInTheReciprocalOfALinear answers these in a few megabytes, but sits near the end of the dispatcher, and the routes ahead of it spent seconds and gigabytes declining. Two early rules: SolveAnExponentialInTheReciprocalOfALinearOverAnotherLinear calls it right after SolveAGaussianInAReciprocal when the exponent is linear in u and a linear below the bar has a slope in u, d g - c h, that is not zero by value. SolveAnElementaryMomentOfAnExponentialInAPowerOfTheReciprocal answers F^(A + B/L^k)/L^n for k from 2 to 8 and n - 1 a positive multiple of k, the elementary cases, which w = u^k makes a polynomial times an exponential. The power below the bar reaches the dispatcher written monic, (c/d + x)^n, and the shared reader took c/d + x for another linear with a slope in u that is zero only by value; the rule decides that by value and asks the clean question itself. Neither rule's question can be its own integrand again. Probe, all 650 rows of family 2: 623 -> 627 answered (2.3:393, 394, 395, 478), none lost, no new wrong, total 188 s / 104 GB -> 89 s / 60 GB; two answers respelled (2.3:364 166 -> 74, 2.3:390 70 -> 74 characters). Chain pocket of 1,938 rows: 1,922 -> 1,925 solved, allocation over those solved on both 286.5 -> 219.9 GB; samples unchanged; 2.3:394 22.8 s / 22.4 GB -> 0.5 s, 2.3:395 timeout -> 60 ms alone. No row's allocation grew past 1.3x. Part of #233. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #233.
#1950's
SolveAnExponentialInTheReciprocalOfALinearanswersF^(e + f (a + b x)/(c + d x))/(g + h x)^kand its kin in a few megabytes. But it sits near the end of the dispatcher, and the roughly 140 routes ahead of it spent seconds and gigabytes declining. This PR adds two rules early in the dispatcher.SolveAnExponentialInTheReciprocalOfALinearOverAnotherLinear, right afterSolveAGaussianInAReciprocal, calls the existing rule early. It does so only when the exponent is linear inu = 1/(c + d x)and a linear below the bar has a slope inu,d g - c h, that is not zero by value.SolveAnElementaryMomentOfAnExponentialInAPowerOfTheReciprocalanswersF^(A + B/L^k)/L^nforkfrom 2 to 8 andn - 1a positive multiple ofk. Those are the elementary cases: underw = u^kthey are a polynomial times an exponential.(c/d + x)^n.c/d + xfor another linear, with a slope inuthat is zero only by value.Neither rule's question can be its own integrand again.
Two alternatives were measured and rejected:
Measured with the probe on all 650 rows of family 2, at master a567c8b:
Chain against master a567c8b, with the harness at its current revision on both arms:
No row's allocation grew past 1.3×, in the pocket or the samples. The two 3.2.1 rows that also moved have identical allocation on both arms.
ExponentialSubstitutionIntegralTest.ADilogarithmIsDeclinedAtOnce("x^2*sech(x)^2")failed locally at load 20 against its 20 s wall clock. It allocates 0.999 GB on master and this branch alike.The 11 rows of 2.3:666–700 that the probe flags WRONG on master are not wrong answers. They are
F^(f (a + b ln(c (d + e x)^n))^2), whose values at the probe's pins are 1e277 to 1e992, past where the evaluator saturates; intbench judges them Solved.The BREAKING-CHANGES.md entry has 2.5.0's column measured.
🤖 Generated with Claude Code
https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura