Skip to content

A quotient in x^2 over a power of a linear in x^2 and a biquadratic is split in x^2 - #1809

Merged
Rafael-SOWNet merged 1 commit into
masterfrom
an-even-quotient-over-a-power-of-a-linear-in-x-squared-is-split-in-x-squared
Oct 6, 2026
Merged

Rafael-SOWNet merged 1 commit into
masterfrom
an-even-quotient-over-a-power-of-a-linear-in-x-squared-is-split-in-x-squared

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

Part of #718.

sqrt(c + d tan(e + f x)) (A + B tan(e + f x) + C tan(e + f x)^2)/(a + b tan(e + f x))^3 ran past the corpus's budget and, given a minute, was answered in 3.5 million characters; the rest of Rubi's 4.3 rows that put a half-odd power of one tangent sum over a whole power of another ran to tens of thousands to millions. Split in x^2, they are answered in a few thousand:

integrand master 2d3dc6a8 this
sqrt(c + d tan(e + f x)) (A + B tan + C tan^2)/(a + b tan(e + f x))^3 past the budget; 3,506,180 characters given a minute 4.6 s, 7,213 characters
(c + d tan(e + f x))^(3/2) (A + B tan + C tan^2)/(a + b tan(e + f x))^3 past the budget; 4,121,343 characters given a minute 6.0 s, 8,783 characters
sqrt(c + d tan(x))/(a + b tan(x))^2 40,540 characters 1,465 characters
(c + d tan(x))^(3/2)/(a + b tan(x))^3 71,293 characters 2,786 characters

The times are the corpus harness's, with its check; the sizes are of the answer the integrator returns, each differentiated back at six points with the symbols pinned. Of the rows both builds answer, 19 of a sample of 20 are the same answer here, and the twentieth is shorter: 103,167 characters to 24,063.

What changes. Under u = tan(x) and t = sqrt(c + d u), these are a polynomial in t^2 over (a d + b (t^2 - c))^n ((t^2 - c)^2 + d^2), a power of a linear in t^2 beside a biquadratic, which was split in t: the sum of two squares went over its conjugates (#1804), each of the three terms came to sixty thousand characters, and their sum multiplied their arms. SolveAnEvenQuotientOverAPowerOfALinearInTheSquareAndABiquadratic splits it in s = x^2 - r, r the linear's root: in powers of s the quotient is the one #1806 splits over w^k Q, and the terms in 1/(x^2 - r)^j go by their reduction to atan(x/sqrt(-r))/sqrt(-r), which holds for every complex r but zero and so writes no arms. A root shared with the biquadratic declines. The split and the biquadratic's arctangents are taken out of SolveAnEvenPolynomialOverASymbolicBiquadratic into two helpers the two rules share; its answers are the same, character for character, on its tests and the cotangent's rows.

Tests: PowerOfALinearInTheSquareBesideABiquadraticIntegralTest, four rows, each differentiated back with its answer under 10,000 characters.

Measured first on Rubi's 4.3 rows with a root and no i, 1,095 problems, at the corpus's 5-second budget, against master 2d3dc6a8:

master this
solved 1050 1068
unevaluated 2 2
unverifiable on the reals 1 1
past the budget 42 24

The harness counts no answer wrong in either. On the 1,043 problems both answer, the time goes from 521 seconds to 315.

Measured then on the Rubi corpus against master 2d3dc6a8:

master this
family 0, independent suites (1814) 1782 1782
family 1, 40 a file (1381) 1339 1340
families 2 to 8, sampled (2410) 2326 2327

The harness counts no answer wrong in either.

The 21 problems the two builds disagreed on, pocket and sample together, run again one build at a time: master answers three of them, each in about twenty seconds with the check, two of them the rows of the table's first lines, and runs past the budget on the other 18; this answers all 21. They are 12 of Rubi's 4.3.4.2, 5 of 4.3.2.1, 2 of 4.3.3.1, one of 4.3.7 and one of 1.2.1.4.

The suite passes on the head here, d6872199, which is master 2d3dc6a8 and this change: 15,113 tests, every one reported. The allocation gate passes too: every gated benchmark allocates what the baseline says. The library builds for netstandard2.0.

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

…s split in x^2

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 6, 2026
@Rafael-SOWNet
Rafael-SOWNet merged commit 1991692 into master Oct 6, 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