Skip to content

Take a power of x out of the bracket of the derivative of a product of powers - #1916

Merged
Rafael-SOWNet merged 4 commits into
masterfrom
a-power-of-x-is-taken-out-of-the-bracket-of-a-derivative
Oct 17, 2026
Merged

Rafael-SOWNet merged 4 commits into
masterfrom
a-power-of-x-is-taken-out-of-the-bracket-of-a-derivative

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

Part of #718.

SolveAsTheDerivativeOfAProductOfPowers raises the powers an integrand already has and looks for a product whose derivative is the integrand. A bracket with a power of x in every term hid one of those powers: x^(2n) (c + d x)^n (2 c x + 3 d x^2) is x^(2n + 1) (c + d x)^n (2 c + 3 d x), the derivative of x^(2n + 2) (c + d x)^(n + 1)/(n + 1). With the x still in the bracket, nothing raised x by enough.

WithAPowerOfXOutOfTheBracket now takes the lowest power of x out of every polynomial factor whose terms all hold one, and the rule reads the rebuilt integrand. Only the reading changes, so the answer is the same product it would have found had the integrand been written that way.

Checks

  • APowerOfXOutOfTheBracketOfADerivativeIntegralTest: 2 cases, differentiated back at four points under two pin sets.
  • Built for every target framework. The first build of the merge failed on netstandard2.0, which cannot deconstruct a KeyValuePair, and the second commit fixes that.

Corpus, measured against master bf4be60 (this branch then merged f9c0ac1):

master this branch
pocket: every row of 1.1.1.2, 1.1.1.3, 1.2.1.2, 1.2.2.2, 1.2.2.3 and 1.3.1 (7,779 statable) 7,752 7,753
families 0–8 samples no change no change
rows moved +1: 1.3.1:272

1.3.1:272 solves on this branch re-run alone, and does not on master. No losses and no slow rows. Gate passed; suite 15,483 passed, 0 failed.

Both cases were integral(...) on 2.5.0 and are 61 and 65 characters here (BREAKING-CHANGES entry).

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

Rafael-SOWNet and others added 4 commits October 16, 2026 20:16
…f powers

A bracket that is a polynomial with a power of x in every term has that power taken out, to join
the powers it multiplies: x^(2n) (c + d x)^n (2 c x + 3 d x^2) is x^(2n + 1) (c + d x)^n (2 c + 3 d x),
the derivative of x^(2n + 2) (c + d x)^(n + 1)/(n + 1), and with the x in the bracket nothing
raised x by enough. Rubi's 1.3.1 had it declined.

Part of #718

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

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 17, 2026
@Rafael-SOWNet
Rafael-SOWNet merged commit a0ae245 into master Oct 17, 2026
34 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in AngouriMath Oct 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant