Skip to content

A whole power of a product below the bar is read distributed after a radical substitution - #1438

Merged
Rafael-SOWNet merged 1 commit into
masterfrom
radical-one-quotient
Sep 21, 2026
Merged

Rafael-SOWNet merged 1 commit into
masterfrom
radical-one-quotient

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

Where the nine seconds of Rubi's x^3 sqrt((a x + 1)/(a x - 1)) went, by dotnet-stack samples: the quotient-of-linears substitution u = sqrt((a x + 1)/(a x - 1)) leaves (12 a (u^4 + u^6) + 4 a (u^8 + u^2)) / (a (1 - u^2))^5 in u, and (a (1 - u^2))^5 below the bar is something no rational reader reads — the same rational function is declined after 5 s in that spelling and answered in 27 ms as .../(a^5 (1 - u^2)^5). So the integrand was split into its terms (SolveBySplittingSum) and each decomposed on its own through the scaling route, four times over the same denominator.

The exponential substitution already distributes whole powers of products for the same reason (Timofeev's 1/(a^2 + b^2 cosh(x)^2)); that loop is a helper now, WithWholePowersOfProductsDistributed, and the linear-radical substitution calls it — only where the integrand in u is rational: with a root of u still in it (a second base, Timofeev's 314) the distributed spelling sent the radical rules down a path that answered with a sign function where the undistributed one is answered exactly, which the suite caught.

before after
x^3 sqrt((a x + 1)/(a x - 1)) 8.7 s 0.5 s
e^acoth(a x) x^3 (7.4.2) 17.7 s 0.1 s
1/(e^(3 acoth(a x)) x^4) (7.4.2) declined at 20 s 0.6 s

Family 7 on the corpus: 162/270, 0 wrong, 46 timeouts (159 and 49 before). 1774 suite unchanged: 1706, 0 wrong, 0 timeout. Four rows added to ExponentialOfALogarithmIntegralTest, pinned as solved, not as timed. Full suite 12171 passed, 0 failed.

Part of #718.

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

…radical substitution

The quotient-of-linears substitution u = sqrt((a x + 1)/(a x - 1)) leaves (a (1 - u^2))^5
below the bar, which no rational reader reads: the same rational function was declined
after five seconds in that spelling and answered in 27 ms as .../(a^5 (1 - u^2)^5). The
integrand was then split into its terms and each decomposed on its own, through the
scaling route, which is where the nine seconds of Rubi's x^3 sqrt((a x + 1)/(a x - 1))
went (dotnet-stack samples: SolveByLinearRadicalSubstitution, SolveBySplittingSum,
SolveByScalingTheVariable). The exponential substitution already distributes such powers
for the same reason; the loop is a helper now and the linear-radical substitution calls
it too, where the integrand in u is rational -- with a root of u still in it the
distributed spelling sent Timofeev's 314 down a path that answered with a sign function.
x^3 sqrt((a x + 1)/(a x - 1)): 8.7 s to 0.5 s; e^acoth(a x) x^3: 17.7 s to 0.1 s;
two more 7.4.2 rows answered within the probe's budget.

#718

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
@Rafael-SOWNet
Rafael-SOWNet merged commit 4c6a9d5 into master Sep 21, 2026
31 checks passed
@Rafael-SOWNet
Rafael-SOWNet deleted the radical-one-quotient branch September 21, 2026 05:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant