Skip to content

x over a cubic binomial beside the root of another is integrated where that is elementary - #1790

Merged
Rafael-SOWNet merged 2 commits into
masterfrom
x-over-a-cubic-binomial-beside-the-root-of-another
Oct 5, 2026
Merged

Rafael-SOWNet merged 2 commits into
masterfrom
x-over-a-cubic-binomial-beside-the-root-of-another

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

Part of #718.

x/((a + b x^3) sqrt(c + d x^3)) is an elliptic integral except at two ratios of its coefficients, 4 b c = a d and 8 b c + a d = 0, where it is arctangents and inverse hyperbolic tangents of sqrt(c + d x^3) and of (1 + q x)/sqrt(c + d x^3) for q = (d/c)^(1/3). Welz's x/((4 - x^3) sqrt(1 - x^3)) and the rest of Rubi's 1.1.3.4 at those ratios were declined:

integrand 2.5.0 master 221d3c5f this
x/((4 - x^3) sqrt(1 - x^3)) declined declined 390 characters
x/((4 - d x^3) sqrt(-1 + d x^3)) declined declined 481 characters
x/((4 c + d x^3) sqrt(c + d x^3)) declined declined 1,165 characters
x/((8 + x^3) sqrt(-1 + x^3)) declined 256 characters 230 characters
x/((8 - d x^3) sqrt(1 + d x^3)) declined declined 337 characters
x/((8 c - d x^3) sqrt(c + d x^3)) declined declined 897 characters

Each is differentiated back at six points with the symbols pinned.

What changes. SolveXOverACubicBinomialBesideTheRootOfAnother, asked after SolveAPseudoEllipticQuotientOverTheRootOfACubicBinomial, reads x/((a + b x^3) sqrt(c + d x^3)) and a constant multiple of it, and writes Rubi's closed forms with y = sqrt(c + d x^3) and q the real cube root:

  • at 4 b c = a d, four terms, q/(3 2^(2/3) b r) times artanh(y/r)/3 + atan(y/(sqrt(3) r))/sqrt(3) - atan(sqrt(3) r (1 + 2^(1/3) q x)/y)/sqrt(3) - artanh(r (1 - 2^(1/3) q x)/y) for r = sqrt(c) and a positive c, and for a negative one, with r = sqrt(-c), the same with each arctangent and inverse hyperbolic tangent exchanged and the first two signs turned;
  • at 8 b c + a d = 0, where the integrand is -(d/b) x/((8 c - d x^3) y), three, (artanh(r (1 + q x)^2/(3 y))/18 - artanh(y/(3 r))/18 - atan(sqrt(3) r (1 + q x)/y)/(6 sqrt(3)))/(r^3 q^2), and for a negative c the same exchanged with the first and last signs turned.

Rubi reaches the second by splitting the integrand into three integrals, one a substitution's and two of the kind #1781 answers. Asked as three, two come back piecewise in the symbols and their sum holds every combination of the arms: 5,607 characters for x/((8 - d x^3) sqrt(1 + d x^3)), where the closed form is 349. Every condition is decided as a value, the form is chosen by the sign of c -- both, each where it holds, for a symbol -- and the answer is differentiated back at sampled points before it is returned.

Tests: XOverACubicBinomialBesideTheRootOfAnotherIntegralTest, eight rows at the two ratios, with c of either sign, differentiated back on both sides of 0 wherever the integrand is real.

Measured first on all of Rubi's 1.1.3.4 and Welz's problems, at the corpus's 5-second budget, against master b1af529d, the branch's base:

master this
solved 740 746
unevaluated 61 55
wrong 0 0
past the budget 5 5

Measured then on the Rubi corpus against master b1af529d:

master this
family 0, independent suites (1814) 1775 1778
family 1, 40 a file (1381) 1316 1318
families 2 to 8, sampled (2410) 2315 2313

The harness counts no answer wrong in either.

The 16 problems the two builds disagreed on, pocket and sample together, run again one build at a time: this answers six that master does not -- Welz's 150, 151 and 153, and 1.1.3.4:319, 324 and 364 -- the ratios above. Four that master answered alone ran past the budget here, 1.1.2.4:343 and 548, 3.2.1:152 and 4.1.2.3:76; run once more with a minute each, they take 20 to 26 seconds on either build, and the load decides them. The other six are answered by both, declined by both or past the budget on both.

The suite on the commit measured, df3fc1d3, passes but for AnIntegralWithNoAnswerStillFinishesQuickly, whose 30-second bound took 33 seconds on a machine running two corpus chains; alone it takes two to three seconds, with this rule or without it. The allocation gate passed: every gated benchmark allocates what the baseline says. The head here, cc7d132d, merges master 221d3c5f; the calculus and corpus tests pass on it, 4,334 tests, and the library builds for netstandard2.0.

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

Rafael-SOWNet and others added 2 commits October 5, 2026 07:53
…e that is elementary

x/((a + b x^3) sqrt(c + d x^3)) is elementary at 4 b c = a d and at
8 b c + a d = 0, Rubi's 1.1.3.4, and Welz's x/((4 - x^3) sqrt(1 - x^3)) and
the rest at those ratios were declined. Both are written in closed form, by
the sign of c, each condition decided as a value and the answer
differentiated back.

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 5, 2026
@Rafael-SOWNet
Rafael-SOWNet merged commit 113ae13 into master Oct 5, 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