Skip to content

A symbolic constant factor no longer stops the rounds of parts - #1473

Merged
Rafael-SOWNet merged 1 commit into
masterfrom
general-base-odd-power
Sep 22, 2026
Merged

Rafael-SOWNet merged 1 commit into
masterfrom
general-base-odd-power

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

F^(c (a + b x)) sin(d + pe x)^3 was left as written, while F^(c x) sin(pe x)^3 and F^(2 x) sin(3 x + 1)^3 both came out — the difference being the exponent's constant part.

That part becomes a factor: the reader turns F^(c(a + b x)) into F^(a c) times an exponential at rate b c ln F. The by-parts loop then stops when the factor it carries differentiates to nothing — and F^(a c) differentiates to a conditional zero, 0 provided not F = 0 or a c > 0, which is not the number 0. So the comparison failed, the loop carried on with the same carried factor, the degree never fell, and after the step bound the rule declined.

The derivative is read bare now (PartialFractions.Bare). The conditions are the constant's own and travel with it in the answer — the factor is in the integrand whatever they say — and what the loop asks is whether the degree has fallen to nothing, which is a question about the variable, not about F.

Measured (final build):

  • Family 4 (familycap.sh 4 6): 286 → 287/422, 0 wrong, unevaluated 85 → 83.
  • Family 6: 377/417, 0 wrong, unchanged. 1774-problem suite: 1707, 0 wrong, 0 timeout, unchanged.
  • Unit suite: 12,644 tests, 0 failed. bench.sh: PASSED on all 19 gated benchmarks.
  • sin^3, cos^2 and sin·cos forms verified by differentiating the answer back with every symbol pinned — worst relative deviation 0 at five points each.

Part of #718.

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

`F^(c (a + b x)) sin(d + pe x)^3` was left as written. The exponent's
constant part becomes a factor -- `F^(a c)` -- and the by-parts loop for
a polynomial times an exponential times a trigonometric stops when the
factor it carries differentiates to nothing. `F^(a c)` differentiates to
a *conditional* zero, `0 provided not F = 0 or a c > 0`, and the loop
compared against the number: it carried on, the degree never fell, and
after the step bound it declined.

The derivative is read bare now. The conditions are the constant's own
and travel with it in the answer -- the factor is there whatever they
say -- and what the loop asks is whether the degree has fallen to
nothing, which is a question about the variable.

Family 4 of the Rubi suite: 286 -> 287 of 422, 0 wrong, with two rows
that produced nothing now producing answers; family 6 377/417 and the
1774-problem suite 1707 unchanged. Suite 12644 passed; allocation gate
passed on all 19 gated benchmarks.

Part of #718.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
@Rafael-SOWNet
Rafael-SOWNet merged commit 78272aa into master Sep 22, 2026
31 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