Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError: Invalid comparison of non-real zoo calling integrate in sympy 1.12 #26507

Open
nasser1 opened this issue Apr 15, 2024 · 0 comments
Open

Comments

@nasser1
Copy link

nasser1 commented Apr 15, 2024

I do not know if this is known or reported before. Feel free to close if so.

I see lots of exceptions

File "/usr/lib/python3.11/site-packages/sympy/core/relational.py", line 822, in __new__
    raise TypeError("Invalid comparison of non-real %s" % me)
TypeError: Invalid comparison of non-real zoo

Here is just one example out of many

from sympy import *
x,n,c,d,e=symbols('x n c d e')
integrand="ln(c*(d+e*x**n))/x/(c*e-(-c*d+1)/(x**n))"
integrate( sympify(integrand), x)

gives

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.11/site-packages/sympy/integrals/integrals.py", line 1567, in integrate
    return integral.doit(**doit_flags)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/integrals.py", line 612, in doit
    antideriv = self._eval_integral(
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/integrals.py", line 1107, in _eval_integral
    result = manualintegrate(g, x)
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 2161, in manualintegrate
    result = integral_steps(f, var).eval()
             ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 2062, in integral_steps
    result = do_one(
             ^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 108, in do_one_rl
    result = rl(expr)
             ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 108, in do_one_rl
    result = rl(expr)
             ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 87, in null_safe_rl
    result = rule(expr)
             ^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 930, in _alternatives
    result = rule(integral)
             ^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 1891, in substitution_rule
    subrule = integral_steps(substituted, u_var)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 2062, in integral_steps
    result = do_one(
             ^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 108, in do_one_rl
    result = rl(expr)
             ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 108, in do_one_rl
    result = rl(expr)
             ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 87, in null_safe_rl
    result = rule(expr)
             ^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 930, in _alternatives
    result = rule(integral)
             ^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 1891, in substitution_rule
    subrule = integral_steps(substituted, u_var)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 2062, in integral_steps
    result = do_one(
             ^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 108, in do_one_rl
    result = rl(expr)
             ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 108, in do_one_rl
    result = rl(expr)
             ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 87, in null_safe_rl
    result = rule(expr)
             ^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 930, in _alternatives
    result = rule(integral)
             ^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 53, in conditioned_rl
    return rule(expr)
           ^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 1361, in parts_rule
    rule = PartsRule(integrand, symbol, u, dv, v_step, make_second_step(steps[1:], v * du))
                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 1357, in make_second_step
    return integral_steps(integrand, symbol)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 2062, in integral_steps
    result = do_one(
             ^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 108, in do_one_rl
    result = rl(expr)
             ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 87, in null_safe_rl
    result = rule(expr)
             ^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 122, in switch_rl
    return rl(expr)
           ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 108, in do_one_rl
    result = rl(expr)
             ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 87, in null_safe_rl
    result = rule(expr)
             ^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 1204, in mul_rule
    next_step = integral_steps(f, symbol)
                ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 2062, in integral_steps
    result = do_one(
             ^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 108, in do_one_rl
    result = rl(expr)
             ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 108, in do_one_rl
    result = rl(expr)
             ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 87, in null_safe_rl
    result = rule(expr)
             ^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 930, in _alternatives
    result = rule(integral)
             ^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 1891, in substitution_rule
    subrule = integral_steps(substituted, u_var)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 2062, in integral_steps
    result = do_one(
             ^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 108, in do_one_rl
    result = rl(expr)
             ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 108, in do_one_rl
    result = rl(expr)
             ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/strategies/core.py", line 87, in null_safe_rl
    result = rule(expr)
             ^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/manualintegrate.py", line 1801, in trig_substitution_rule
    a_positive = ((a.is_number and a > 0) or a.is_positive)
                                   ^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/core/decorators.py", line 236, in _func
    return func(self, other)
           ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/core/expr.py", line 371, in __gt__
    return StrictGreaterThan(self, other)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/core/relational.py", line 822, in __new__
    raise TypeError("Invalid comparison of non-real %s" % me)
TypeError: Invalid comparison of non-real zoo


Version info

>>> import sympy
>>> sympy.__version__
'1.12'

>python --version
Python 3.11.8
>

For reference the anti derivative should be

In[1]:= <<Rubi`
In[5]:= integrand=Log[c*(d+e*x^n)]/x/(c*e-(-c*d+1)/(x^n))
In[6]:= Int[integrand,x]

Out[6]= -(PolyLog[2,1-c (d+e x^n)]/(c e n))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants