# limit(x**n, x, -oo) is sometimes wrong #8634

Open
opened this Issue Dec 18, 2014 · 7 comments

Projects
None yet
5 participants
Contributor

### pelegm commented Dec 18, 2014

 For example, ```>>> n = Symbol('n', integer=True, positive=True) # could be 3 >>> limit(x**n, x, -oo) oo``` while ```>>> limit(x**3, x, -oo) -oo``` It looks like it assumes `n` is even, because stating `odd=True` for `n` seems to solve this issue.

### Amitjha1412 commented Jan 11, 2015

 Hi , I am new to Sympy community. I wanted to get started with this bug. Can you please explain more about this bug ? Thanks. Amit
Contributor

### pelegm commented Jan 11, 2015

 Can you ask a more specific question?

### Amitjha1412 commented Jan 11, 2015

 Where should i start looking into?
Contributor

### pelegm commented Jan 11, 2015

 Where should i start looking into? I have no idea. I just reported the bug, I don't have a clue about where to start looking for a solution.
Contributor

### sandeepveethu commented Feb 6, 2016

 It looks like it assumes n is even, because stating odd=True for n seems to solve this issue. ```>>>n=symbols('n',integer=True,positive=True,odd=True) >>>x=symbols('x') >>>limit(x**n,x,-oo) oo``` @pelegm odd=True doesn't solve this issue @jksuom can you help me in fixing this , i think limitinf function is causing this issue but i am not able to figure out where?
Member

### jksuom commented Feb 6, 2016

 I'm afraid this is not going to be easy to fix. It seems that `limit` invokes `gruntz` even if that would not be necessary in this case. That will routinely replace the variable `x` with an expression of type `-exp(y)` (as `x` is expected to be negative). Then `x**n` will take the form `exp(y*n + I*pi*n)`, which is correct. But afterwards, in passing to the limit `y -> oo`, the `I*pi*n` term is lost and the result will be `exp(oo) = oo`. It seems to me that the limit should be computed without passing over to `gruntz`, but that would imply a major rearrangement of `limit`.
Contributor

### sandeepveethu commented Feb 6, 2016

 @jksuom thanks a lot for the insight.

### skirpichev added a commit to diofant/diofant that referenced this issue Feb 20, 2016

``` Add test for sympy/sympy#8634 ```
`Fixed in 0b6a8c6.`
``` 5c05c44 ```

### skirpichev added a commit to diofant/diofant that referenced this issue Feb 21, 2016

``` Add test for sympy/sympy#8634 ```
`Fixed in 0b6a8c6.`
``` 2fcbb58 ```

### 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 ```

Closed