Skip to content

A hyperbolic function of a logarithm is integrated, the exponent folded structurally - #1470

Merged
Rafael-SOWNet merged 1 commit into
masterfrom
hyperbolic-of-a-logarithm
Sep 22, 2026
Merged

Rafael-SOWNet merged 1 commit into
masterfrom
hyperbolic-of-a-logarithm

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

tanh(ln(x)) was left as written. The library spells tanh(y) with e^(2y), so a hyperbolic function of a logarithm is an exponential whose exponent is a sum holding one logarithm — e^(a + b ln(q)) — and SolveByFoldingAnExponentialOfALogarithm read only a product, e^(k ln q).

It reads the exponent structurally now: e^(u + v) is e^u e^v, e^(u - v) is e^u/e^v, e^(k u) and e^(u/d) are powers of e^u for an x-free k and d, and e^(ln q) is q. So a + b ln(c x^n) folds to e^a (c x^n)^b, and its negation — which the same function writes below the bar — to the reciprocal.

Two conditions, both from measurements rather than taste:

  • Composed exponents are flattened as they fold. n (ln(q)/2) is q^(n/2), not (sqrt(q))^n. The nested spelling is the same value and a different question to every rule below: with it, e^(n acoth(a x))/(c - a^2 c x^2)^4 (family 7, 7.4.2:854) went from a 3 s decline to a 50 s search.
  • One logarithm in the exponent. A difference of two — how an inverse hyperbolic cotangent of a reciprocal arrives — folds to a power of a quotient of quotients that nothing below reads, and costs the same way.

Measured (final build, rebased onto 48d447c8):

  • Family 6 (familycap.sh 6 20): 375 → 377/417, 0 wrong, timeouts 17 → 16 — 6.3.2:214 x tanh(a + 2 ln x)^2 and 6.5.3:253 sech(a + 2 ln(c/sqrt x))^3; nothing lost.
  • Family 7: 215/270, 0 wrong, unchanged (one row flips Unsolved → Timeout on the 5 s cap and times out identically on master solo).
  • 1774-problem suite: 1707, 0 wrong, 0 timeout, unchanged. Unit suite: 12,632 tests, 0 failed. bench.sh: PASSED on all 19 gated benchmarks.

Still declined, and deliberately: sinh(a + b ln(c x^n)) with a symbolic n and b, which needs int (c x^n)^b dx — that is c^b x^(n b + 1)/(n b + 1) only under c > 0 and x > 0, a restriction on the variable rather than on a parameter, which deserves its own decision.

BREAKING-CHANGES.md carries the entry with the 2.5.0 column measured on a 2.5.0 build.

Part of #718.

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

…ed structurally

`tanh(ln(x))` was left as written. The library spells `tanh(y)` with
`e^(2y)`, so a hyperbolic function of a logarithm is an exponential whose
exponent is a sum holding one logarithm -- `e^(a + b ln(q))` -- and
SolveByFoldingAnExponentialOfALogarithm read only a product, `e^(k ln q)`.

It reads the exponent structurally now: `e^(u + v)` is `e^u e^v`,
`e^(u - v)` is `e^u/e^v`, `e^(k u)` and `e^(u/d)` are powers of `e^u` for
an x-free k and d, and `e^(ln q)` is `q`. So `a + b ln(c x^n)` folds to
`e^a (c x^n)^b`, and its negation -- which the same function writes below
the bar -- to the reciprocal of that.

Two conditions, both measured. Composed exponents are flattened as they
fold: `n (ln(q)/2)` is `q^(n/2)` and not `(sqrt(q))^n`, whose nesting made
`e^(n acoth(a x))/(c - a^2 c x^2)^4` a search of fifty seconds where the
flat form is declined in three. And one logarithm in the exponent: a
difference of two -- how the inverse hyperbolic cotangent of a reciprocal
arrives -- folds to a power of a quotient of quotients that nothing below
reads.

Family 6 of the Rubi suite: 375 -> 377 of 417, 0 wrong; family 7 215/270
and the 1774-problem suite 1707 unchanged. Suite 12632 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 71eeb20 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