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: cannot determine truth value of Relational calling integrate in sympy 1.12 #26510

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

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 number of exceptions TypeError: cannot determine truth value of Relational . Here is just one example out of many

from sympy import *
x,m,b,a=symbols('x m b a')
integrand="x**(1+m)*cosh(b*x+a)"
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 1098, in _eval_integral
    h = meijerint_indefinite(g, x)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/meijerint.py", line 1678, in meijerint_indefinite
    rv = meijerint_indefinite(
         ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/meijerint.py", line 1668, in meijerint_indefinite
    res = _meijerint_indefinite_1(f.subs(x, x + a), x)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/meijerint.py", line 1694, in _meijerint_indefinite_1
    gs = _rewrite1(f, x)
         ^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/meijerint.py", line 1618, in _rewrite1
    g = _rewrite_single(g, x, recursive)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/core/cache.py", line 72, in wrapper
    retval = cfunc(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/meijerint.py", line 1572, in _rewrite_single
    F, strip, _ = mellin_transform(f, x, s, integrator=my_integrator,
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/transforms.py", line 405, in mellin_transform
    return MellinTransform(f, x, s).doit(**hints)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/transforms.py", line 168, in doit
    res = [self.__class__(*([x] + list(self.args[1:]))).doit(**hints)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/transforms.py", line 168, in <listcomp>
    res = [self.__class__(*([x] + list(self.args[1:]))).doit(**hints)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/transforms.py", line 161, in doit
    fn, T = self._try_directly(**hints)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/transforms.py", line 125, in _try_directly
    T = self._compute_transform(self.function,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/transforms.py", line 344, in _compute_transform
    return _mellin_transform(f, x, s, **hints)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/transforms.py", line 245, in wrapper
    res = func(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sympy/integrals/transforms.py", line 322, in _mellin_transform
    conds.sort(key=lambda x: (x[0] - x[1], count_ops(x[2])))
  File "/usr/lib/python3.11/site-packages/sympy/core/relational.py", line 510, in __bool__
    raise TypeError("cannot determine truth value of Relational")
TypeError: cannot determine truth value of Relational

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[11]:= integrand=x^(1+m)*Cosh[b*x+a]
In[12]:= Int[integrand,x]

Out[12]= -((E^a x^m (-b x)^-m Gamma[2+m,-b x])/(2 b^2))-(E^-a x^m (b x)^-m Gamma[2+m,b x])/(2 b^2)


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