A power of x shared by the numerator and every term of a sum below the bar is cancelled - #1800
Merged
Rafael-SOWNet merged 2 commits intoOct 6, 2026
Conversation
…e bar is cancelled x/(a x + b x^3 + c x^5) and x/(x (a + b x^2 + c x^4)) arrive at the integrator as x^0/(a + b x^2 + c x^4), and no rule reads x^0 as a polynomial, so both were declined where 1/(a + b x^2 + c x^4) is answered. The integrand's normalization, on every call, now writes a zeroth power of anything with the variable in it as one: it differs from one only where its base is zero, a point the antiderivative passes through as it passes every removable one. And 1/(x (a x + b x^3 + c x^5)^2) ran past a minute: the power of x that SolveByPartialFractions takes out of a sum was written beside the one already there, x x^2 (a + b x^2 + c x^4)^2, which the splits read as two factors. The powers of one base are gathered before the quotient is asked again. Rubi's 1.2.4.2 goes from 125 to 128 of 130. Part of #718. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
…he-variable-is-one-to-the-integrator
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 #718.
A power of
xshared by the numerator and every term of a sum below the bar is Rubi's 1.2.4 ("improper" trinomials), and two spellings of it were not read:15aae3d3x/(a x + b x^3 + c x^5)x/(x (a + b x^2 + c x^4))1/(x (a x + b x^3 + c x^5)^2)1/(x^3 (a x + b x^3 + c x^5)^2)What changes. Two spellings, each read as what it is:
x/(x (a + b x^2 + c x^4))reaches the integrator asx^0/(a + b x^2 + c x^4), and no rule readsx^0as a polynomial. The integrand's normalization, on every call, writes a zeroth power of anything with the variable in it as one now: it differs from one only where its base is zero, a point the antiderivative passes through as it passes every removable one.SolveByPartialFractionstakes the lowest power ofxout of each sum below the bar, and wrotex (a x + b x^3 + c x^5)^2asx x^2 (a + b x^2 + c x^4)^2; the splits after it readxandx^2as two factors, and the search ran past a minute. The powers are gathered into one now,x^3 (a + b x^2 + c x^4)^2.Tests:
PowerOfATrinomialIntegralTest.AZerothPowerOfXIsOneand.ASquareWithAPowerOfXInEachTerm, differentiated back on both sides of4 a c - b^2.Measured first on the 698 problems of Rubi's 1.1.4.2, 1.1.4.3 and 1.2.4.2, at the corpus's 5-second budget, against master
b1af529d(the cache's base; the change is cherry-picked there):The harness counts no answer wrong in either.
Measured then on the Rubi corpus against master
b1af529d:The harness counts no answer wrong in either.
The 18 problems the two builds disagreed on, pocket and sample together, run again one build at a time: master answers 7, declines 9 and runs past the budget on 2; this answers 17 and declines 1.
The suite on the commit measured,
9adc1473(the change cherry-picked ontob1af529d), passes, 14,944 tests, and so does the allocation gate: every gated benchmark allocates what the baseline says. The head here,7dc1c0d8, merges master15aae3d3; the calculus and corpus tests pass on it, 4,365 tests, and the library builds fornetstandard2.0.🤖 Generated with Claude Code
https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura