Package: python3-sympy Version: 1.12-6 Severity: normal Thanks for maintaining Debian's cool python3-sympy package.
If you happen to have the time, and are so inclined, feel free to share any thoughts you may happen to have on whether it might be improved to not crash when asked to nsimplify() the following... (1/(1 - (0.5*Y + 1)**1.5583266249))**6.5 I can replicate the crash with python3-sympy 1.12-6 python3 3.11.4-5+b1 by copying and pasting the following line to a bash shell prompt.... $ python3 -c 'import sympy ; sympy.nsimplify(sympy.sympify("(1/(1 - (0.5*Y + 1)**1.5583266249))**6.5"))' It seems to me it should not crash, but it fails with Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sympy/core/assumptions.py", line 499, in getit return self._assumptions[fact] ~~~~~~~~~~~~~~~~~^^^^^^ KeyError: 'extended_nonnegative' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/lib/python3/dist-packages/sympy/simplify/simplify.py", line 1446, in nsimplify return _real_to_rational(expr, tolerance, rational_conversion) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/simplify/simplify.py", line 1582, in _real_to_rational return p.subs(reps, simultaneous=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/basic.py", line 1036, in subs return rv.xreplace(reps) ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/basic.py", line 1230, in xreplace value, _ = self._xreplace(rule) ^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/basic.py", line 1252, in _xreplace return self.func(*args), True ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/cache.py", line 72, in wrapper retval = cfunc(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/power.py", line 371, in __new__ obj = b._eval_power(e) ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/power.py", line 471, in _eval_power elif re(b).is_extended_nonnegative and (abs(e) < 2) == True: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/assumptions.py", line 503, in getit return _ask(fact, self) ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/assumptions.py", line 559, in _ask fact_i_value = handler_i(obj) ^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/add.py", line 863, in _eval_is_extended_negative v = _monotonic_sign(a) ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/exprtools.py", line 76, in _monotonic_sign if not self.is_Add and self.as_numer_denom()[1].is_number: ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/mul.py", line 1234, in as_numer_denom numers, denoms = list(zip(*[f.as_numer_denom() for f in self.args])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/mul.py", line 1234, in <listcomp> numers, denoms = list(zip(*[f.as_numer_denom() for f in self.args])) ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/power.py", line 1584, in as_numer_denom return self.func(n, exp), self.func(d, exp) ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/cache.py", line 72, in wrapper retval = cfunc(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/power.py", line 371, in __new__ obj = b._eval_power(e) ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/numbers.py", line 2351, in _eval_power x, xexact = integer_nthroot(abs(self.p), expt.q) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/power.py", line 83, in integer_nthroot x, t = gmpy.iroot(y, n) ^^^^^^^^^^^^^^^^ ValueError: n must be > 0 I think it's possible to do better. Version 16.0.5-4 of another computer algebra package called "mathomatic" does not crash on the same example: $ mathomatic -e "(1/(1 - (0.5*Y + 1)**1.5583266249))**6.5" simplify 1-> (1/(1 - (0.5*Y + 1)**1.5583266249))**6.5 1 13 #1: ----------------------------^-- Y 2 (1 - ((- + 1)^1.5583266249)) 2 1-> simplify 1 #1: --------------------------------- Y 13 ((1 - ((- + 1)^1.5583266249))^--) 2 2 Thank you and kind regards, Kingsley -- System Information: Debian Release: trixie/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'unstable') merged-usr: no Architecture: i386 (i686) Kernel: Linux 6.5.0-1-686-pae (SMP w/2 CPU threads; PREEMPT) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages python3-sympy depends on: ii python3 3.11.4-5+b1 ii python3-mpmath 1.2.1-1 Versions of packages python3-sympy recommends: ii isympy-common 1.7.1-2 ii python3-numpy 1:1.24.2-1 ii python3-pil 9.4.0-1.1+b1 Versions of packages python3-sympy suggests: pn dvipng <none> pn python-sympy-doc <none> pn texlive-fonts-extra <none> -- no debconf information -- debian-science-maintainers mailing list debian-science-maintainers@alioth-lists.debian.net https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/debian-science-maintainers