Repository navigation
A product of powers is read as its own raised product's derivative without a sum beside it - #1694
Merged
Rafael-SOWNet merged 3 commits intoOct 2, 2026
Merged
Conversation
…thout a sum beside it SolveAsTheDerivativeOfAProductOfPowers reads an integrand as a constant times the derivative of its powers with some of them raised by one. Three changes: - The derivative's sum is built as a sum of products, each raised base's derivative times the other raised bases, so that it reads as a polynomial and the constant comes off one monomial. Built with f'/f in it, it read as nothing, and the constant fell to simplifying a quotient of the two sums: past a minute for Rubi's 1.3.2 x (a + b x + c x^2)^m (d + e x + f x^2 + g x^3)^n (...), 0.3 s now. - Where a power is not a whole one, a product with no sum beside it is tried as well: 1/(x^2 sqrt(a x + b x^4)) is (-2/(3 a) sqrt(a x + b x^4)/x^2)'. - And there, x is raised from nothing where it is not among the powers: (a + b x^n + c x^(2 n))^p (a + b (1 + n + n p) x^n + ...) is (x (a + b x^n + c x^(2 n))^(p + 1))'. Part of #718. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
…eside it Measured on the 2.5.0 tag and on this branch. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
…-without-a-sum-beside-it
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.
SolveAsTheDerivativeOfAProductOfPowersreads an integrand as a constant times the derivative of its powers with some of them raised by one:e^x x^2 ln(x)^2 (3 + (3 + x) ln(x))is(e^x x^3 ln(x)^3)'. Three cases it missed, each from Rubi's family 1:x (a + b x + c x^2)^m (d + e x + f x^2 + g x^3)^n (2 a d + ...), Rubi 1.3.2x^2 (a + b x + c x^2)^(m + 1) (d + e x + f x^2 + g x^3)^(n + 1), 0.3 s1/(x^2 sqrt(a x + b x^4)), Rubi 1.1.4.2-2 sqrt(a x + b x^4)/(3 a x^2)(a + b x^n + c x^(2 n))^p (a + b (1 + n + n p) x^n + c (1 + 2 n (1 + p)) x^(2 n)), Rubi 1.2.3.5x (a + b x^n + c x^(2 n))^(p + 1)What changes
f'/fin it, it didn't read as a polynomial, and the constant fell to simplifying a quotient of the two sums, which ran past a minute for the first row. As a polynomial, the constant comes off one monomial.xraised from nothing, where a power is not whole andxis not among the powers. It is written in front of them, as the rule for a polynomial times a power of its base writes it.Tests:
ProductOfPowersDerivativeTestgains the three rows andAPowerThatIsNoDerivativeIsDeclined, which checks thatsqrt(1 + x^3)is still declined. The three rows fail on master.TheNeighboursKeepTheirFormsandTheAnswerIsTheProductItselfpinsqrt(1 + 2 x)and3 x (e^x + x)^(2/3)as written, which is why a lone power is left out and the raisedxis written in front.Measured on the Rubi corpus against master
94ba5ff6, with both builds side by side:Both builds give the same three wrong answers: two in family 1, 1.2.1.1's roots of negative squares, which #1672 fixed on master after this branch's base, and one in family 7,
e^(2 acoth(a x)) sqrt(c - a c x)/x, which #1682 fixed.Sixteen problems moved between the two runs, so I re-ran each alone on both builds. This branch answers 9 of them and master none, neither wrongly.
The suite passes, 14,316 tests on a fresh build, and so does the allocation gate. Master
61de03deis merged in since, without conflicts. The three rows above were measured on that merge against master61de03de, and the calculus tests pass on it, 3,697 of them.🤖 Generated with Claude Code
https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura