Skip to content

A polynomial over a power of a linear beside a radical is written in powers of the linear at its root - #1391

Merged
Rafael-SOWNet merged 4 commits into
masterfrom
polynomial-over-a-linear-factor
Sep 17, 2026
Merged

Rafael-SOWNet merged 4 commits into
masterfrom
polynomial-over-a-linear-factor

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

P(x)/((a + b x)^k S(x)) with S not a polynomial in x — a polynomial over a linear beside a radical — is written with the polynomial in powers of the linear at its root, P = p_0 + p_1 (a + b x) + … + (a + b x)^k Q(x), a polynomial identity whose coefficients are the Taylor coefficients of P at −a/b over the powers of b. The integrand is then Q/S + Σ p_j/((a + b x)^(k−j) S) exactly and everywhere, and each piece is integrated on its own.

Why. (A + B x + C x^2 + D x^3)/((a + b x) sqrt(c + d x)) was answered through the substitution u = sqrt(c + d x) term by term, a cubic in u^2 − c over a symbolic quadratic in u each time, in a hundred kilobytes of piecewise that did not evaluate within the corpus's budget — three of six in Rubi's P(x) (a + b x)^m (c + d x)^n file and four of six in the next were timeouts of that kind. Reduced, it is a quadratic over the root (three powers by the substitution) and one p_0/((a + b x) sqrt(c + d x)): under four kilobytes, half a second.

Placed before the sum is split, so the whole polynomial is reduced once rather than each of its terms; only beside a factor that is not a polynomial, a quotient of polynomials being the partial fractions' to take apart.

Carries #1389's commit (base master): the Taylor coefficients at a root are that PR's helper, made internal here. Rebased onto master once #1389 merges.

Measured. Family 1 (6 per file = 228, same harness on both sides): 136 → 137 on top of #1389, one timeout answered; the remaining timeouts of the same two files are (a + b x)^2 (c + d x)^(3/2) and (a + b x)^3 (c + d x)^(5/2) denominators, where the reduced pieces p_j/((a + b x)^(k−j) (c + d x)^(n/2)) go through the radical substitution into a repeated symbolic quadratic, which the partial fractions do not take apart yet — the next step. Independent suites 1707 → 1707, 0 wrong, 0 timeouts. Four suites green; the test differentiates three shapes back at pinned symbols and bounds each answer at four kilobytes.

Part of #718.

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

Rafael-SOWNet and others added 2 commits September 16, 2026 17:57
…or coefficients and the quadratic's numerator by the residue modulo it, and a decomposition is integrated term by term

Every rational function of the tangent with a power of a linear in
it -- Rubi's tan^4 (A + B tan)/(a + b tan)^4 is u^4 (A + B u)/((a + b u)^4 (1 + u^2))
under the substitution -- went to the Hermite reduction, because the
partial-fraction gate for symbolic linear factors asked for linears
only, and the reduction answered it in a^63 b^10, right and unusable:
the answer did not evaluate within the corpus's budget. The gate now
admits quadratic factors to the first power beside the linears, and
the decomposition is computed where each piece lives. The coefficient
of 1/F^j over a linear F of multiplicity k is beta^(j-k) times the
(k-j)th Taylor coefficient at the root of the numerator over the other
factors, by the quotient of the two polynomials' own series at the
root -- differentiating the quotient symbolically gives the same
numbers as quotients of derivatives the gcd does not cancel, in b^249
at the third order. The numerator over a quadratic is the residue of
the numerator times the inverses of the other factors in the ring
modulo the quadratic: two coefficients, each a small quotient, with
nothing expanded but the quadratic's own reductions.

Two things around it. The gcd that puts a coefficient in lowest terms
is bounded at 256 nodes for the simplifier's sake, and a fourth-order
block's coefficient is eleven hundred; the partial-fraction caller may
raise the bound, and where the gcd still declines past its degree and
step limits, the written factors of the denominator -- a series leaves
b^9 (a^2 + b^2)^7 -- are divided out of the numerator exactly for as
long as that goes. And a decomposition is now integrated one term at a
time as written: handed to the chain whole, a sum with a term past the
size taken as written went through the expanding gather, which
combined D^(-1) (P + Q x)/(1 + x^2) into (P + Q x)/(D + D x^2), a
quadratic with symbols in every coefficient, integrated as a piecewise
on the sign of its discriminant.

x^4 (A + B x)/((a + b x)^4 (1 + x^2)) is a line of arctangents and
logarithms in a quarter of a second, and the tangent form with it.

Part of #718.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
…powers of the linear at its root, and what the power divides goes over the radical alone

P(x)/((a + b x)^k S(x)) with S not a polynomial in x: P is
p_0 + p_1 (a + b x) + ... + (a + b x)^k Q(x), a polynomial identity whose
coefficients are the Taylor coefficients of P at -a/b over the powers
of b, so the integrand is Q/S + sum p_j/((a + b x)^(k-j) S) exactly and
everywhere, and each piece is integrated on its own.

(A + B x + C x^2 + D x^3)/((a + b x) sqrt(c + d x)) was answered through
the substitution u = sqrt(c + d x) term by term, a cubic in u^2 - c
over a symbolic quadratic in u each time, in a hundred kilobytes of
piecewise that did not evaluate within the corpus's budget: three of
six in Rubi's P(x) (a + b x)^m (c + d x)^n file and four of six in the
next were timeouts of that kind. Reduced, it is a quadratic over the
root, three powers by the substitution, and one
p_0/((a + b x) sqrt(c + d x)); under four kilobytes in half a second.

Before the sum is split, so that the whole polynomial is reduced once
rather than each of its terms, and only beside a factor that is not a
polynomial, a quotient of polynomials being the partial fractions' to
take apart. Carries #1389's commit for the Taylor coefficients at a
root, which are its.

Part of #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 bf171c1 into master Sep 17, 2026
31 checks passed
@Rafael-SOWNet
Rafael-SOWNet deleted the polynomial-over-a-linear-factor branch September 17, 2026 14:31
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