Skip to content

Commit 8419306

Browse files
committed
Merge remote-tracking branch 'origin/master' into an-arctangent-over-a-power-of-one-plus-i-c-x-under-the-tangent
# Conflicts: # Sources/AngouriMath/Functions/Continuous/Integration/Integration.Definition.cs
2 parents a294a9c + 4590113 commit 8419306

7 files changed

Lines changed: 572 additions & 5 deletions

‎BREAKING-CHANGES.md‎

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,35 @@ A not-equal written `<>` is read as `not (a = b)`, and printed that way.
4242

4343
## Unreleased — since 2.5.0
4444

45+
### A high half-odd power of a quadratic beside a power of another is reduced in exact rationals
46+
47+
**Answers where there were none.** Welz's `1/((3 - 2 x + x^2)^(11/2) (1 + x + 2 x^2)^5)` and its `^(21/2)`, `^10` twin
48+
were declined. The pieces over the first quadratic are a polynomial times its half-odd power, reduced to
49+
`R Q^(k + 1/2) + K/sqrt(Q)` by one linear solve, which took a numerator of degree 8 and a power of 9/2 at most. With
50+
numbers for every coefficient the solve is now done in exact rationals, to degree 24 and a power of 25/2
51+
([#718](https://github.com/asc-community/AngouriMath/issues/718)).
52+
53+
| Input | Was (2.5.0) | Now |
54+
|---|---|---|
55+
| `"1/((3-2*x+x^2)^(11/2)*(1+x+2*x^2)^5)".ToEntity().Integrate("x")` | `integral(...)` | 1,853 characters |
56+
| `"1/((3-2*x+x^2)^(21/2)*(1+x+2*x^2)^10)".ToEntity().Integrate("x")` | `integral(...)` | 3,475 characters |
57+
58+
### A polynomial over a symbolic quartic that is two quadratics in a hidden variable is split over them
59+
60+
**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
61+
`(A + B x + C x^2 + D x^3)/(a + b x + c x^2 + b x^3 + a x^4)` and `1/(4 a c + 4 c^2 x^2 + 4 c d x^3 + d^2 x^4)`. A
62+
palindromic quartic is `x^2` times a quadratic in `x + 1/x`, and a quartic whose odd terms vanish under
63+
`y = x + c/d` is a quadratic in `y^2`; either is the product of two quadratics in x whose
64+
coefficients are the roots of that quadratic, and the polynomial over it is split over the two
65+
([#718](https://github.com/asc-community/AngouriMath/issues/718)).
66+
67+
| Input | Was (2.5.0) | Now |
68+
|---|---|---|
69+
| `"1/(a+b*x+c*x^2+b*x^3+a*x^4)".ToEntity().Integrate("x")` | `integral(...)` | 1,620 characters |
70+
| `"(A+B*x+C*x^2+D*x^3)/(a+b*x+c*x^2+b*x^3+a*x^4)".ToEntity().Integrate("x")` | `integral(...)` | 3,416 characters |
71+
| `"1/(4*a*c+4*c^2*x^2+4*c*d*x^3+d^2*x^4)".ToEntity().Integrate("x")` | `integral(...)` | 3,920 characters |
72+
| `"x/(4*a*c+4*c^2*x^2+4*c*d*x^3+d^2*x^4)".ToEntity().Integrate("x")` | `integral(...)` | 2,315 characters |
73+
4574
### `|` is divisibility, and was disjunction
4675

4776
**Read this one first.** It is the only entry here that changes what existing input *means* rather
@@ -74,6 +103,18 @@ since semantic versioning admits it.
74103
Measured on the suite: **7 of 8,525 tests** referenced the old reading — five boolean-solver inputs
75104
written `A | B`, and two that existed to record this spelling as at risk.
76105

106+
### A power of x is taken out of a bracket to find the derivative of a product of powers
107+
108+
**Answers where there were none.** `x^(2n) (c + d x)^n (2 c x + 3 d x^2)`, Rubi's 1.3.1, was declined. A bracket that
109+
is a polynomial with a power of x in every term now has that power taken out to join the powers it multiplies, and the
110+
integrand is then `x^(2n + 1) (c + d x)^n (2 c + 3 d x)`, the derivative of `x^(2n + 2) (c + d x)^(n + 1)/(n + 1)`
111+
([#718](https://github.com/asc-community/AngouriMath/issues/718)).
112+
113+
| Input | Was (2.5.0) | Now |
114+
|---|---|---|
115+
| `"x^(2*n)*(c+d*x)^n*(2*c*x+3*d*x^2)".ToEntity().Integrate("x")` | `integral(...)` | 61 characters |
116+
| `"x^(n-1)*(c+d*x^2)^n*(c*x+3*d*x^3)".ToEntity().Integrate("x")` | `integral(...)` | 65 characters |
117+
77118
### The last digits of an evaluated sine, cosine, tangent, arcsine or arctangent
78119

79120
**Silent, and in the hundredth digit.** `EvalNumerical` at the default hundred digits gives the
@@ -134,6 +175,67 @@ the working digits, or `MathS.Settings.PrecisionErrorZeroRange` where a caller h
134175
still that integer, so `e^(-123.456)` is 0 as it was.
135176
[#1338](https://github.com/asc-community/AngouriMath/issues/1338).
136177

178+
### A constant or an exponential evaluated at a higher precision than before has all of its digits
179+
180+
**More digits where there were a hundred.** `pi`, `e` and an exponential, evaluated once at one precision, went on
181+
answering in that precision under a higher one: in 2.5.0 `pi` read under 300 digits after a read under 100 had 100
182+
digits, and `e^(1/3)` the same. Each is now worked out in the precision asked for
183+
([#1367](https://github.com/asc-community/AngouriMath/issues/1367), #1368).
184+
185+
| Input | Was (2.5.0) | Now |
186+
|---|---|---|
187+
| `MathS.pi.Evaled` under 300 digits, after a read under 100 | 100 digits | 300 digits |
188+
| `"e^(1/3)".Evaled` under 300 digits, after a read under 100 | 100 digits | 300 digits |
189+
190+
### An exponential of i times an arctangent of a linear is written algebraically before the other rules
191+
192+
**Answers where there were none.** `e^(3 i atan(a + b x))/x^2` ran out of time, and so did fifteen more of Rubi's
193+
5.3.6, all `e^(n i atan(a + b x))` over a power of x or `e^(n i atan(a x))` beside a high power of `c + a^2 c x^2`.
194+
The exponential is now written as powers of linears, `(1 + i L)^(n/2) (1 - i L)^(-n/2)`, at the question asked, ahead
195+
of the rules that spent the budget, and for every `n` beside a pole at 0 where the argument has a constant term. A
196+
piecewise answer is checked for `NaN` without `Simplify`, whose search on one of them ran past a minute
197+
([#718](https://github.com/asc-community/AngouriMath/issues/718)).
198+
199+
| Input | Was (2.5.0) | Now |
200+
|---|---|---|
201+
| `"e^(3*i*atan(a+b*x))/x^2".ToEntity().Integrate("x")` | `integral(...)` | 1,945 characters |
202+
| `"1/(e^(3*i*atan(a+b*x))*x^4)".ToEntity().Integrate("x")` | `integral(...)` | 8,542 characters |
203+
| `"e^(3*i*atan(a+b*x))/x^4".ToEntity().Integrate("x")` | `integral(...)` | 35,041 characters |
204+
| `"e^(6*i*atan(a*x))*x^2/(c+a^2*c*x^2)^19".ToEntity().Integrate("x")` | `integral(...)` | 233 characters |
205+
206+
### A string parsed once is parsed again under the other downcasting setting
207+
208+
**A different number.** `MathS.FromString` remembered what it had parsed, keyed on the parsing setting alone. A string
209+
parsed with downcasting on came back with its exact numbers under downcasting off, and the other way round. The
210+
cache is now keyed on the downcasting setting too
211+
([#1513](https://github.com/asc-community/AngouriMath/issues/1513), #1517).
212+
213+
| Input | Was (2.5.0) | Now |
214+
|---|---|---|
215+
| `MathS.FromString("1/3").Evaled` under downcasting off, after the same parse with it on | `1/3` | `0.3333…` (one hundred digits) |
216+
217+
### A difference of a negated term is printed as a sum
218+
219+
**A printed form.** A solution and a difference were printed with the sign of a negative factor left inside:
220+
`b - x = 0` solved for `x` printed `-b / (-1)`, and LaTeX printed `1/100 - (-4) x` as `\frac{1}{100}--4 \cdot x`, which does
221+
not read back. Both are simplified to the sum now (#1397).
222+
223+
| Input | Was (2.5.0) | Now |
224+
|---|---|---|
225+
| `"b - x = 0".Solve("x")` | `{ -b / (-1) }` | `{ b }` |
226+
| `"1/100 - (-4)*x".ToEntity().Latexize()` | `\frac{1}{100}--4 \cdot x` | `\frac{1}{100}+4 \cdot x` |
227+
228+
### A complex number divided by one beyond `10^50` in modulus is not zero
229+
230+
**A wrong answer.** With the downcasting off, a complex division took the reciprocal of the divisor's squared modulus
231+
first, and beyond `10^50` that underflowed the context to zero, so `(1.98e119 + i)/(3.39e125 + i)` was `0`. It is
232+
divided by Smith's method now, which scales by the larger part and squares nothing
233+
([#1372](https://github.com/asc-community/AngouriMath/issues/1372), #1374).
234+
235+
| Input | Was (2.5.0) | Now |
236+
|---|---|---|
237+
| `(1.98e119 + i)/(3.39e125 + i)` with the downcasting off | `0` | `5.8407…e-7` |
238+
137239
### A piecewise is defined where the case it takes is
138240

139241
**Domain conditions that were false.** The domain condition of a piecewise asked every case's predicate
@@ -2904,6 +3006,18 @@ Each of these was checked by differentiating it back with the parameters pinned
29043006
four points. The Rubi sample is unchanged at 231 of 463 with no wrong answers, so nothing that
29053007
already had an antiderivative moves.
29063008

3009+
### `NaN` a fifth time, from an exponential times a cosine with a complex rate
3010+
3011+
**A wrong answer.** `e^(-i x) cos(x)` was answered `NaN + C`: the closed form `P(x) e^(a x) cos(b x)` divides by
3012+
`a^2 + b^2`, which is `(-i)^2 + 1 = 0` here, the resonance that leaves a term linear in `x`. It is integrated through the
3013+
exponential form now, and so is `e^(-i arctan(a x))/(c + a^2 c x^2)^(3/2)`, which comes to it
3014+
(PR [#1380](https://github.com/asc-community/AngouriMath/pull/1380)).
3015+
3016+
| Input | Was (2.5.0) | Now |
3017+
|---|---|---|
3018+
| `"e^(-i*x)*cos(x)".Integrate("x")` | `NaN + C` | `x/2 + e^(-2 i x)/(-4 i)` up to form |
3019+
| `"e^(-i*atan(a*x))/(c+a^2*c*x^2)^(3/2)".Integrate("x")` | `integral(...)` | an answer |
3020+
29073021
### `NaN` a fourth time, from an exponent that is `-1` only as a value
29083022

29093023
**A wrong answer.** `x^(-1 - 3n) (a + b x^n)^3` came back as a sum whose last term was `x^0/0`, so

0 commit comments

Comments
 (0)