Skip to content

A negative power of a linear beside a root of another is integrated by the recurrence on the power - #1758

Merged
Rafael-SOWNet merged 4 commits into
masterfrom
a-negative-power-of-a-linear-beside-a-root-of-another-by-the-recurrence
Oct 4, 2026
Merged

Rafael-SOWNet merged 4 commits into
masterfrom
a-negative-power-of-a-linear-beside-a-root-of-another-by-the-recurrence

Conversation

@Rafael-SOWNet

@Rafael-SOWNet Rafael-SOWNet commented Oct 4, 2026 •

Copy link
Copy Markdown
Member

Part of #718.

1/((a + b x)^4 sqrt(c + d x)) and (p + q x + r x^2 + s x^3)/((a + b x)^5 sqrt(c + d x)) ran past forty seconds on master: the substitution for the root makes a rational function over a power of a quadratic with symbols in it, and its reduction grows with the power. 2.5.0 declined them:

integrand 2.5.0 master 9848e467 this
1/((a + b x)^4 sqrt(c + d x)) declined searched past 40 s in 0.5 s
(p + q x + r x^2 + s x^3)/((a + b x)^5 sqrt(c + d x)) declined searched past 40 s in 0.4 s
(c + d x)^(3/2)/(a + b x)^3 declined in 1.3 s in 0.2 s
1/(x^3 (c + d x)^(5/2)) declined in 0.06 s in 0.08 s
x/((a + b x)^4 sqrt(c + d x)) declined in 15 s in 0.1 s

Each answer is differentiated back with the symbols pinned and compared as a complex number at x = -2.3, -1.1, -0.4, 0.4, 1.1, 2.3; the times include that.

What changes. A whole power m <= -2 of one linear beside a power that is not whole of another, times a polynomial, is integrated by the recurrence

int L1^m L2^n = L1^(m + 1) L2^(n + 1)/((m + 1) D) - (m + n + 2) d/((m + 1) D) int L1^(m + 1) L2^n,

L1 = a + b x, L2 = c + d x, D = b c - a d -- the derivative of L1^(m + 1) L2^(n + 1) read back -- down to int L2^n/L1, the polynomial written in powers of L1 first; the powers at or above zero and int L2^n/L1 are asked of the integrator, which answers each in a step. The integrand's factors are read through a whole power of a product, since the question comes back as ((a/b + x)^4 sqrt(c + d x))^(-1) once a constant is out of its bar.

Tests: LinearPowerRecurrenceIntegralTest, five rows differentiated back with the symbols pinned, on both sides of zero; 2.5.0 declines all five, and master answers three of them, in a twentieth of a second to fifteen seconds, and runs past forty on the other two.

Measured first on the 413 problems of Rubi's 1.1.1.2, 1.1.1.3, 1.1.1.5 and 1.2.1.4 with one whole power below -1 of a linear beside one power that is not whole of another, at the corpus's 5-second budget, against master cb8e133d, the branch's base:

master this
solved 372 377
wrong 0 0
past the budget 5 0

Measured then on the Rubi corpus against master cb8e133d:

master this
family 0, independent suites (1814) 1772 1772
family 1, 40 a file (1381) 1305 1309
families 2 to 8, sampled (2410) 2279 2272

The harness counts no answer wrong in the pocket or the sample on either build. Of the 17 problems the two builds disagreed on, pocket and sample together, run again one build at a time, master answers 11 and this 16. Five are the recurrence's, past the budget on master and answered here in 0.06 to 0.75 seconds -- 1/((a + b x)^5 sqrt(c + d x)), (A + B x + C x^2 + D x^3)/((a + b x)^5 sqrt(c + d x)) and three more -- and (f + g x)/((d + e x)^(5/2) (c d^2 - b d e - b e^2 x - c e^2 x^2)^(3/2)) takes 2.8 seconds where master takes sixteen. The other eleven both answer at fifteen to twenty-four seconds, or both decline, at the edge of the harness's patience: the eight that families 3, 6 and 7 lose in the sample are eight of them, past the patience on the loaded run and answered on both builds alone.

The suite passes on the commit measured, cc678773, 14,780 tests with 13 skipped, and the allocation gate with it. On the merge with master 9848e467, f2fcab08, the 4,158 calculus and corpus tests that run pass, with 2 skipped. Every row of the first table is as it says on the merge. With master moved on to ce4d1a1f, the 4,164 calculus and corpus tests pass on that merge too.

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

Rafael-SOWNet and others added 4 commits October 4, 2026 11:00
…y the recurrence on the power

A whole power m <= -2 of one linear beside a power that is not whole of
another, times a polynomial, goes down the recurrence
int L1^m L2^n = L1^(m+1) L2^(n+1)/((m+1) D) - (m+n+2) d/((m+1) D) int L1^(m+1) L2^n
to int L2^n/L1, the polynomial written in powers of L1 first. Under the
substitution for the root the same integrand is a rational function over a
power of a quadratic with symbols in it, which took four seconds at the
square and twenty at the fourth power. A whole power of a product is read
through, since the question comes back so once a constant is out of the bar.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
…0 has

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
@Rafael-SOWNet Rafael-SOWNet added this to the 2.6.0 milestone Oct 4, 2026
@Rafael-SOWNet
Rafael-SOWNet merged commit 4c3aa3b into master Oct 4, 2026
34 checks passed
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