integrate(1/(x**2 + a**2)**2, x) is wrong if a is real #5907

Closed
opened this Issue Oct 30, 2011 · 3 comments

Projects
None yet
3 participants
Member

asmeurer commented Oct 30, 2011

 ``````In [4]: a = Symbol('a', positive=True) In [5]: integrate(1/(x**2 + a**2)**2, x) Out[5]: ⎛x⎞ atan⎜─⎟ x ⎝a⎠ ────────────── + ─────── 4 2 2 3 2⋅a + 2⋅a ⋅x 2⋅a In [6]: a = Symbol('a', real=True) In [7]: integrate(1/(x**2 + a**2)**2, x) Out[7]: x ────────────── 4 2 2 2⋅a + 2⋅a ⋅x It's easy to check that the first result is correct and the second is not. `````` Original issue for #5907: http://code.google.com/p/sympy/issues/detail?id=2808 Original author: https://code.google.com/u/asmeurer@gmail.com/
Member

asmeurer commented Oct 30, 2011

 ``````Note that this used to work in SymPy 0.7.0: In [1]: a = Symbol('a', real=True) In [2]: integrate(1/(x**2 + a**2)**2, x) Out[2]: ⎛ 4 ⎞ ⎛ 4 ⎞ ⎜ ⅈ⋅a ⎟ ⎜ⅈ⋅a ⎟ ⅈ⋅log⎜- ──── + x⎟ ⅈ⋅log⎜──── + x⎟ ⎜ 3 ⎟ ⎜ 3 ⎟ x ⎝ │a│ ⎠ ⎝│a│ ⎠ ────────────── - ───────────────── + ─────────────── 4 2 2 3 3 2⋅a + 2⋅a ⋅x 4⋅│a│ 4⋅│a│ Then in SymPy 0.7.1 it failed with UnificationFailed: can't unify DMF(([], [mpz(1)]), ZZ) with 0, which was fixed by commit 04a53dc970eb8632745fe0382c9864d0976231fa Author: Mateusz Paprocki Date: Thu Oct 6 16:05:46 2011 -0700 Fixed integrate(a/(a**2 + b*a + b*c*x**2), x) (#2718) In [1]: var('a:c', positive=True) Out[1]: (a, b, c) In [2]: integrate(a/(a**2+b*a+b*c*x**2),x) Out[2]: ⎛ ⎛ ___ 3/2 ⎞ ⎞ ___ ⎜ x⋅⎝a⋅╲╱ b ⋅c + b ⋅c⎠ ⎟ ╲╱ a ⋅atan⎜──────────────────────────────────────────────⎟ ⎜ 3/2 ___ _______ ___ ___ _______⎟ ⎝a ⋅╲╱ c ⋅╲╱ a + b + ╲╱ a ⋅b⋅╲╱ c ⋅╲╱ a + b ⎠ ────────────────────────────────────────────────────────── ___ ___ _______ ╲╱ b ⋅╲╱ c ⋅╲╱ a + b In [3]: simplify(_) Out[3]: ⎛ ___ ___ ⎞ ___ ⎜ ╲╱ b ⋅╲╱ c ⋅x ⎟ ╲╱ a ⋅atan⎜───────────────⎟ ⎜ ___ _______⎟ ⎝╲╱ a ⋅╲╱ a + b ⎠ ─────────────────────────── ___ ___ _______ ╲╱ b ⋅╲╱ c ⋅╲╱ a + b and then started giving the wrong result above. **Cc:** matt...@gmail.com `````` Original comment: http://code.google.com/p/sympy/issues/detail?id=2808#c1 Original author: https://code.google.com/u/asmeurer@gmail.com/
Member

asmeurer commented Mar 20, 2012

 ``````**Status:** Valid `````` Original comment: http://code.google.com/p/sympy/issues/detail?id=2808#c2 Original author: https://code.google.com/u/asmeurer@gmail.com/

skirpichev added a commit to skirpichev/diofant that referenced this issue Nov 2, 2016

``` Add regression tests & mention closed issues ```
```    close sympy/sympy#3112 (MrvAsympt was added in diofant#6)
close sympy/sympy#9173 (test was added in 5a510ac)
close sympy/sympy#9808 (fixed in 09e539b)
close sympy/sympy#9341 (fixed in af98a00)
close sympy/sympy#9908 (fixed in cc3fa8d)
close sympy/sympy#6171 (test added in d278031)
close sympy/sympy#9276 (diagnose_imports.py removed in ab8c535)
close sympy/sympy#10201 (fixed in 0d0fc5f)
close sympy/sympy#9057 (test was added in 8290a0c)
close sympy/sympy#11159 (test was added in ffb76cb)
close sympy/sympy#2839 (new AST transformers are used, see diofant#278 and diofant#167)
close sympy/sympy#11081 (see ed01e16 and bb92329)
close sympy/sympy#10974 (see 73fc425)
close sympy/sympy#10806 (test in 539929a)
close sympy/sympy#10801 (test in 2fe3da5)
close sympy/sympy#9549 (test in 88bdefa)
close sympy/sympy#4231 (test was added in fb411d5)
close sympy/sympy#8634 (see 2fcbb58)
close sympy/sympy#8481 (see 1ef20d3)
close sympy/sympy#9956 (fixed in a34735f)
close sympy/sympy#9747 (see e117c60)
close sympy/sympy#7853 (see 3e4fbed)
close sympy/sympy#9634 (see 2be03f5)
close sympy/sympy#8500 (fixed in diofant#104 and finally in diofant#316)
close sympy/sympy#9192 (see 9bf622f)
close sympy/sympy#7130 (see e068fa3)
close sympy/sympy#8514 (see b2d543b)
close sympy/sympy#9334 (see 90de625)
close sympy/sympy#8229 (see 9755b89)
close sympy/sympy#8061 (see 7054f06)
close sympy/sympy#7872 (tested in diofant#6)
close sympy/sympy#3496 (tested in test_log_symbolic)
close sympy/sympy#2929 (see da7db7a)
close sympy/sympy#8203 (oo is not a real, see diofant#36)
close sympy/sympy#7649 (0 is imaginary since diofant#8)
close sympy/sympy#7256 (fixed in c0a4549)
close sympy/sympy#6783 (see cb28d63)
close sympy/sympy#5662 (is_integer issue fixed in 6bfa9f8, there is no is_bounded anymore)
close sympy/sympy#5295 (fixed with diofant#354)
close sympy/sympy#4856 (we now have flake/pep tests)
close sympy/sympy#4555 (flake8 enabled after diofant#214)
close sympy/sympy#5773 (cmp_to_key removed after diofant#164 and c9acbf0)
close sympy/sympy#5484 (see above)

fixes sympy/sympy#8825 (probably via diofant#209)
fixes sympy/sympy#8635
fixes sympy/sympy#8157
fixes sympy/sympy#7872
fixes sympy/sympy#7599
fixes sympy/sympy#6179
fixes sympy/sympy#5415
fixes sympy/sympy#2865
fixes sympy/sympy#5907
fixes sympy/sympy#11722

Closes diofant#347```
``` 74ade76 ```

skirpichev added a commit to skirpichev/diofant that referenced this issue Nov 2, 2016

``` Add regression tests & mention closed issues ```
```    close sympy/sympy#3112 (MrvAsympt was added in diofant#6)
close sympy/sympy#9173 (test was added in 5a510ac)
close sympy/sympy#9808 (fixed in 09e539b)
close sympy/sympy#9341 (fixed in af98a00)
close sympy/sympy#9908 (fixed in cc3fa8d)
close sympy/sympy#6171 (test added in d278031)
close sympy/sympy#9276 (diagnose_imports.py removed in ab8c535)
close sympy/sympy#10201 (fixed in 0d0fc5f)
close sympy/sympy#9057 (test was added in 8290a0c)
close sympy/sympy#11159 (test was added in ffb76cb)
close sympy/sympy#2839 (new AST transformers are used, see diofant#278 and diofant#167)
close sympy/sympy#11081 (see ed01e16 and bb92329)
close sympy/sympy#10974 (see 73fc425)
close sympy/sympy#10806 (test in 539929a)
close sympy/sympy#10801 (test in 2fe3da5)
close sympy/sympy#9549 (test in 88bdefa)
close sympy/sympy#4231 (test was added in fb411d5)
close sympy/sympy#8634 (see 2fcbb58)
close sympy/sympy#8481 (see 1ef20d3)
close sympy/sympy#9956 (fixed in a34735f)
close sympy/sympy#9747 (see e117c60)
close sympy/sympy#7853 (see 3e4fbed)
close sympy/sympy#9634 (see 2be03f5)
close sympy/sympy#8500 (fixed in diofant#104 and finally in diofant#316)
close sympy/sympy#9192 (see 9bf622f)
close sympy/sympy#7130 (see e068fa3)
close sympy/sympy#8514 (see b2d543b)
close sympy/sympy#9334 (see 90de625)
close sympy/sympy#8229 (see 9755b89)
close sympy/sympy#8061 (see 7054f06)
close sympy/sympy#7872 (tested in diofant#6)
close sympy/sympy#3496 (tested in test_log_symbolic)
close sympy/sympy#2929 (see da7db7a)
close sympy/sympy#8203 (oo is not a real, see diofant#36)
close sympy/sympy#7649 (0 is imaginary since diofant#8)
close sympy/sympy#7256 (fixed in c0a4549)
close sympy/sympy#6783 (see cb28d63)
close sympy/sympy#5662 (is_integer issue fixed in 6bfa9f8, there is no is_bounded anymore)
close sympy/sympy#5295 (fixed with diofant#354)
close sympy/sympy#4856 (we now have flake/pep tests)
close sympy/sympy#4555 (flake8 enabled after diofant#214)
close sympy/sympy#5773 (cmp_to_key removed after diofant#164 and c9acbf0)
close sympy/sympy#5484 (see above)

fixes sympy/sympy#8825 (probably via diofant#209)
fixes sympy/sympy#8635
fixes sympy/sympy#8157
fixes sympy/sympy#7872
fixes sympy/sympy#7599
fixes sympy/sympy#6179
fixes sympy/sympy#5415
fixes sympy/sympy#2865
fixes sympy/sympy#5907
fixes sympy/sympy#11722

Closes diofant#347```
``` 48c035e ```

ghost commented Feb 2, 2018

 I think this has been fixed `>>> var('x a b c d')` `>>> integrate(1/(x**2 + a**2)**2, x)` `x/(2*a**4 + 2*a**2*x**2) + (-I*log(-I*a + x)/4 + I*log(I*a + x)/4)/a**3` `>>> y = integrate(1/(x**2 + a**2)**2, x)` `>>> z = diff(y,x)` `>>> simplify(z)` `1/(a**4 + 2*a**2*x**2 + x**4)`

Merged