Skip to content

Commit 099dfc7

Browse files
Integrate a transcendental function of one shifted linear in it, the logarithms of a quotient onto the exponential integral, and derivatives over a power of a logarithm or an inverse (#2034)
- A function of one shifted linear c + d x alone with something other than sums, products and powers in it, written in u = c + d x where a power of the linear stands below the bar inside a sum or the linear is written two ways: F^(a + b/(c + d x)^3)/(c + d x)^19, ln(c (d + k/(f + g x)^3)^q). Only for an integrand as written, not one a substitution expands: the inverse sine's of (d + e x^2)^3 (a + b asinh(c x))^2 is a sum of exponentials of linears that cost 370 MB to read. - Powers of two linears beside a negative power of a logarithm of their quotient, onto the exponential integral in that quotient; the zero- discriminant case of SolveAnExponentialOverSeveralLinears no longer divides by the difference of its two equal roots. - The derivative of a function over a power of a logarithm, an inverse trigonometric function or a sum holding a logarithm, whose terms are not elementary apart. - A product of powers whose own logarithmic derivative is a constant, and a power with x in its base and its exponent as an exponential, its free terms raised: x^(-2 - 1/x) (1 - ln(x)) is -(x^(-1/x))'. - The Risch-Norman ansatz with li(x), and erfi beside one Gaussian with a factor of x alone below the bar, in a second pass: e^((a + x)^2)/x^2 - 2 a e^((a + x)^2)/x. Beside a polynomial, or two Gaussians, the pass declined at three times the allocation of the rules after it, and is not taken there. Chain against master 6e16aae: pocket of 1,105 rows, 1,072 -> 1,085 solved, 0 wrong; family 3's sample 222 -> 224, the others unchanged; the 13 rows that moved, alone, 0 -> 13 solved; 6,603 rows compared for allocation, none grew past 1.3x. Part of #233. Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1 parent 78cd31b commit 099dfc7

8 files changed

Lines changed: 1062 additions & 14 deletions

‎BREAKING-CHANGES.md‎

Lines changed: 90 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,24 @@ powers of `c + d x` itself were read before ([#233](https://github.com/asc-commu
8383
| `"e^(k/(c+d*x))/(a+b*x)".ToEntity().Integrate("x")` | `integral(...)` | two `Ei`, of `k/(c + d x)` and of `k/(c + d x) - k b/(a d - b c)` |
8484
| `"f^(c/(a+b*x)^2)*x^4".ToEntity().Integrate("x")` | `integral(...)` | 1,262 characters, the error function and powers of `1/(a + b x)` |
8585

86+
### A transcendental function of one shifted linear is integrated in the linear
87+
88+
**Answers where there were none.** Rubi's 2.3 `F^(a + b/(c + d x)^3)/(c + d x)^19` and 3.4 `ln(c (d + e/(f + g x)^3)^q)`
89+
ran past the budget, and 3.3's `(e g + f g x)^(p - 1)/ln(d (e + f x)^p)` was declined. Where every x stands in one linear
90+
`c + d x`, up to constant multiples, and either a power of it stands below the bar inside a sum or it is the base of powers
91+
written two ways, the integrand is now written in `u = c + d x` before the polynomial term takes the slope out of a power
92+
of it: that wrote `(c/d + x)^19` beside the `(c + d x)^3` in the exponent, and the exponential ansatz on the two spellings
93+
took longer the higher the power, 24 s at the 16th. In u it is 20 ms. Rows of these shapes that were answered are answered
94+
with the slope in another place, `F^(a + b/(c + d x)^2)/(c + d x)^2` in 15 ms where it took 1.6 s
95+
([#233](https://github.com/asc-community/AngouriMath/issues/233)).
96+
97+
| Input | Was (2.5.0) | Now |
98+
|---|---|---|
99+
| `"F^(a+b/(c+d*x)^3)/(c+d*x)^19".ToEntity().Integrate("x")` | `integral(...)` | 386 characters, `F^(a + b/(c + d x)^3)` times a polynomial in `(c + d x)^3` |
100+
| `"ln(c*(d+k/(f+g*x)^3)^q)".ToEntity().Integrate("x")` | `integral(...)` | 626 characters, by parts, the cube roots of `-k/d` |
101+
| `"(k*g+f*g*x)^(p-1)/ln(d*(k+f*x)^p)".ToEntity().Integrate("x")` | `integral(...)` | 150 characters, `Ei(ln(d (k + f x)^p))` |
102+
| `"F^(a+b/(c+d*x)^2)/(c+d*x)^2".ToEntity().Integrate("x")` | `integral(...)` | `-F^a sqrt(pi) erf(sqrt(-b ln F)/(c + d x))/(2 d sqrt(-b ln F))` |
103+
86104
### A polynomial over a symbolic quartic that is two quadratics in a hidden variable is split over them
87105

88106
**Answers where there were none.** `1/(a + b x + c x^2 + b x^3 + a x^4)` was declined, and so were Rubi's 1.3.1
@@ -216,6 +234,22 @@ it is still declined ([#233](https://github.com/asc-community/AngouriMath/issues
216234
| `"e^(n*acoth(a*x))*x/(c-a^2*c*x^2)^(3/2)".ToEntity().Integrate("x")` | `integral(...)` | 155 characters |
217235
| `"e^(n*acoth(a*x))*x^3/(c-a^2*c*x^2)^(5/2)".ToEntity().Integrate("x")` | `integral(...)` | 397 characters |
218236

237+
### A product of powers whose logarithmic derivative is a constant is its own derivative's multiple
238+
239+
**Answers where there were none.** Rubi's 2.3 `(a F^(c + d x))^m (b F^(e + f x))^n` and `x^(-2 - 1/x) (1 - ln(x))`, and 6.7.1's
240+
`cosh(x)^x (ln(cosh(x)) + x tanh(x))` and `F^(a + b x) (cosh(c + d x) - sinh(c + d x))^n`, were declined. The derivative of
241+
a product of powers was read with some of them raised by one, and never with none: where the product's own logarithmic
242+
derivative is a constant, the product over that constant is the answer. A power with x in its base and its exponent is an
243+
exponential, `f^g = e^(g ln f)`, its terms free of x apart, and where the rest of the integrand is a constant times the
244+
exponentials' logarithmic derivative the exponentials are the answer: `x^(-2 - 1/x) (1 - ln(x))` is `-(x^(-1/x))'`
245+
([#233](https://github.com/asc-community/AngouriMath/issues/233)).
246+
247+
| Input | Was (2.5.0) | Now |
248+
|---|---|---|
249+
| `"(a*F^(c+d*x))^m*(b*F^(k+f*x))^n".ToEntity().Integrate("x")` | `integral(...)` | `(a F^(c + d x))^m (b F^(k + f x))^n/((d m + f n) ln(F))` |
250+
| `"x^(-2-1/x)*(1-ln(x))".ToEntity().Integrate("x")` | `integral(...)` | `-x^(-1/x)` |
251+
| `"cosh(x)^x*(ln(cosh(x))+x*tanh(x))".ToEntity().Integrate("x")` | `integral(...)` | `((e^x + e^(-x))/2)^x`, which is `cosh(x)^x` |
252+
219253
### A power of a quotient of linears beside whole powers of them is integrated under the quotient
220254

221255
**Answers where there were none.** `e^(n acoth(a x))/(c - a^2 c x^2)^2` was declined, and so were its `^3` and `^4`, Rubi's
@@ -245,6 +279,26 @@ found by one linear solve whose last equation is checked; where it fails the rul
245279
| `"e^(1/2*atanh(a*x))*x^2/(c-a^2*c*x^2)^(9/8)".ToEntity().Integrate("x")` | `integral(...)` | 121 characters |
246280
| `"e^(2*atanh(a*x))*x^2/(c-a^2*c*x^2)^3".ToEntity().Integrate("x")` | `integral(...)` | 109 characters |
247281

282+
### Powers of two linears beside a negative power of a logarithm of their quotient are integrated onto the exponential integral
283+
284+
**Answers where there were none.** Rubi's 3.2.1 `1/((a g + b g x)^2 (A + B ln(e (a + b x)/(c + d x)))^2)` and three more
285+
ran past the budget, and the rest of its rows and 3.2.2's with the powers of the linears summing to `-2` or `-3` took from
286+
0.8 s to past 8 s: twenty of them past 8 s on a loaded machine, now under a quarter of a second. Under `t = (a + b x)/(c + d x)` each is a power of `t` and a polynomial beside a negative power of
287+
`A + B ln(e t^n)`, which the rule for a power over a power of a logarithm answers onto `Ei`; that substitution was the
288+
rule's already, far down the chain, and the polynomial term reached first took `b^2 g^2` out of `(a g + b g x)^2` and
289+
asked again, past the budget. It is now tried first for these shapes. And `1/(t^2 (A + B ln(k t))^2)`, the question it
290+
asks, had an answer with no value at any point: under `u = ln(k t)` the square `B^2 u^2 + 2 A B u + A^2` was split over
291+
its two roots, which are one, and the partial fractions divided by their difference. A quadratic below the bar whose
292+
discriminant is zero is now one linear twice ([#233](https://github.com/asc-community/AngouriMath/issues/233)).
293+
294+
| Input | Was (2.5.0) | Now |
295+
|---|---|---|
296+
| `"1/((a*g+b*g*x)^2*(A+B*ln(k*(a+b*x)/(c+d*x)))^2)".ToEntity().Integrate("x")` | no answer in twenty seconds | 340 characters, `Ei(-(A + B ln(k (a + b x)/(c + d x)))/B)` and the elementary term |
297+
| `"1/((a*g+b*g*x)^2*(A+B*ln(k*((a+b*x)/(c+d*x))^n))^2)".ToEntity().Integrate("x")` | `integral(...)` | 394 characters |
298+
| `"1/((a*g+b*g*x)^2*(A+B*ln(k*(c+d*x)^2/(a+b*x)^2)))".ToEntity().Integrate("x")` | no answer in twenty seconds | 231 characters, one `Ei` |
299+
| `"1/((a*g+b*g*x)^3*(A+B*ln(k*(a+b*x)/(c+d*x)))^2)".ToEntity().Integrate("x")` | no answer in twenty seconds | 644 characters, two powers of t |
300+
| `"1/(x^2*(A+B*ln(k*x))^2)".ToEntity().Integrate("x")` | `integral(...)` | 133 characters, `Ei(-(A/B + ln(k x)))`, where before this change master gave an answer with no value at any point |
301+
248302
### The last digits of an evaluated sine, cosine, tangent, arcsine or arctangent
249303

250304
**Silent, and in the hundredth digit.** `EvalNumerical` at the default hundred digits gives the
@@ -323,12 +377,29 @@ no order. Five integrals whose working squares such a sum were past the budget a
323377

324378
| Input | Was (2.5.0) | Now |
325379
|---|---|---|
326-
| `"1/((a*g+b*g*x)^2*(A+B*ln(k*((a+b*x)/(c+d*x))^n))^2)".ToEntity().Integrate("x")` | `integral(...)` | 412 characters |
327-
| `"1/((a*g+b*g*x)^2*(A+B*ln(k*(a+b*x)/(c+d*x)))^2)".ToEntity().Integrate("x")` | past 60 s | 358 characters |
380+
| `"1/((a*g+b*g*x)^2*(A+B*ln(k*((a+b*x)/(c+d*x))^n))^2)".ToEntity().Integrate("x")` | `integral(...)` | 394 characters |
381+
| `"1/((a*g+b*g*x)^2*(A+B*ln(k*(a+b*x)/(c+d*x)))^2)".ToEntity().Integrate("x")` | past 60 s | 340 characters |
328382
| `"(a+a*sin(k+f*x))^(3/2)*(A+B*sin(k+f*x))/(c+d*sin(k+f*x))^2".ToEntity().Integrate("x")` | `integral(...)` | 5,373 characters |
329383
| `"sech(x)^2*tanh(x)^2/(2+tanh(x)^3)^2".ToEntity().Integrate("x")` | past 60 s | 117 characters |
330384
| `"coth(x)^3*csch(x)*sqrt(1+csch(x))".ToEntity().Integrate("x")` | `integral(...)` | 325 characters |
331385

386+
### The derivative of a function over a power of a logarithm, an inverse tangent or a sum with a logarithm in it is read as one
387+
388+
**Answers where there were none.** Rubi's 3.2.3 `1/((c + d x)(c - a + (d - b) x) ln(Q)) + ln(1 - Q)/((a + b x)(c + d x) ln(Q)^2)`
389+
for `Q = (a + b x)/(c + d x)`, its twin, 5.3.4's `x^3/((1 + a^2 x^2) atan(a x)^3) - 3 x^2/(2 a atan(a x)^2)` and 3.5's
390+
`(a d n x^m - a d m x^m ln(c x^n) - b d n (q - 1) ln(c x^n)^q)/(x (a x^m + b ln(c x^n)^q)^2)` ran past the budget. Each is
391+
`(U/V^k)' = U'/V^k - k U V'/V^(k + 1)`, whose terms are not elementary apart, so every split lost it and by parts on either
392+
term asked the other's question again. For `V` a logarithm or an inverse trigonometric function, the terms over
393+
`V^(k + 1)` give `U = -B/(k V')`, its rational part in lowest terms; for `V` a sum with a logarithm in it, `U` is a
394+
monomial of the numerator times a constant read monomial by monomial. The answer is given only where its derivative is
395+
the whole integrand at sampled points ([#233](https://github.com/asc-community/AngouriMath/issues/233)).
396+
397+
| Input | Was (2.5.0) | Now |
398+
|---|---|---|
399+
| `"1/((c+d*x)*(-a+c+(-b+d)*x)*ln((a+b*x)/(c+d*x)))+ln(1+(-a-b*x)/(c+d*x))/((a+b*x)*(c+d*x)*ln((a+b*x)/(c+d*x))^2)".ToEntity().Integrate("x")` | no answer in twenty seconds | `ln(1 + (-a - b x)/(c + d x))/((a d - b c) ln((a + b x)/(c + d x)))` |
400+
| `"x^3/((1+a^2*x^2)*atan(a*x)^3)-3/2*x^2/(a*atan(a*x)^2)".ToEntity().Integrate("x")` | `integral(...)` | `-x^3/(2 a atan(a x)^2)` |
401+
| `"(a*d*n*x^m-a*d*m*x^m*ln(c*x^n)-b*d*n*(q-1)*ln(c*x^n)^q)/(x*(a*x^m+b*ln(c*x^n)^q)^2)".ToEntity().Integrate("x")` | `integral(...)` | `d ln(x^n c)/(a x^m + b ln(c x^n)^q)` |
402+
332403
### A rational evaluated at a higher precision than before has all of its digits
333404

334405
**More digits where there were a hundred.** A rational kept its decimal value in the precision current when it was
@@ -373,6 +444,23 @@ parts what is left is a rational function and one over the root
373444
|---|---|---|
374445
| `"x^3*ln(-1+4*x+4*sqrt((x-1)*x))".ToEntity().Integrate("x")` | `integral(...)` | `x^4 ln(...)/4` minus a polynomial, `ln(8 x + 1)` and terms over `sqrt(x^2 - x)` |
375446

447+
### The Risch-Norman ansatz reads `ln(x)` beside x, with the logarithmic integral and the error function among its terms
448+
449+
**Answers where there were none.** Rubi's 3.5 `(1 - ln(x))/(x (x + ln(x)))` and `(1 + x)/(ln(x) (x + ln(x)))`, and 2.3's
450+
`e^((a + x)^2)/x^2 - 2 a e^((a + x)^2)/x`, were declined. The ansatz left a plain `ln(x)` to the logarithm tower's, a
451+
polynomial in it, which has no logarithm of `x + ln(x)`; it now reads one where a sum below the bar holds x beside
452+
`ln(x)` to two or more powers. Its answer may now hold `li(x)`, whose derivative is `1/ln(x)`, where `ln(x)` divides the
453+
denominator, and for an exponential of a quadratic `erfi(sqrt(A) (x + B/(2 A)))`, whose derivative is a constant times
454+
the exponential: `(1 + x)/(ln(x) (x + ln(x)))` is `(li(x) + ln(ln(x)) - ln(x + ln(x)))'`, and by parts the first term
455+
of the third leaves the second's negative and `2 e^((a + x)^2)`. With either among the terms the elimination pins the
456+
symbols first where it declines with them in ([#233](https://github.com/asc-community/AngouriMath/issues/233)).
457+
458+
| Input | Was (2.5.0) | Now |
459+
|---|---|---|
460+
| `"(1-ln(x))/(x*(x+ln(x)))".ToEntity().Integrate("x")` | `integral(...)` | `ln(x + ln(x)) - ln(x)` |
461+
| `"(1+x)/(ln(x)*(x+ln(x)))".ToEntity().Integrate("x")` | `integral(...)` | `li(x) + ln(ln(x)) - ln(x + ln(x))` |
462+
| `"e^((a+x)^2)/x^2-2*e^((a+x)^2)*a/x".ToEntity().Integrate("x")` | `integral(...)` | `-e^((a + x)^2)/x + sqrt(pi) erfi(x + a)` |
463+
376464
### The last digits of an evaluated logarithm, exponential, real power or complex power
377465

378466
**Silent, and in the hundredth digit.** `ln`, `log`, `e^x`, a real base to a real power and the

0 commit comments

Comments
 (0)