Skip to content

Commit

Permalink
Merge pull request #26557 from rrodenbusch/_simplify-recursion
Browse files Browse the repository at this point in the history
Prevent RecursionError in nc_simplify for floating point coefficients
  • Loading branch information
oscarbenjamin committed Apr 30, 2024
2 parents 7c4f580 + e3c8666 commit bd0b3e6
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 2 deletions.
1 change: 1 addition & 0 deletions .mailmap
Original file line number Diff line number Diff line change
Expand Up @@ -1188,6 +1188,7 @@ Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
Rich LaSota <rjlasota@gmail.com>
Richard Otis <richard.otis@outlook.com> <ovolve@users.noreply.github.com>
Richard Otis <richard.otis@outlook.com> <richard.otis@jpl.nasa.gov>
Richard Rodenbusch <rrodenbusch@gmail.com> rrodenbusch <rrodenbusch@gmail.com>
Richard Samuel <98638849+samuelard7@users.noreply.github.com>
Richard Samuel <samuelrichard214@gmail.com>
Rick Muller <rpmuller@gmail.com>
Expand Down
4 changes: 2 additions & 2 deletions sympy/simplify/simplify.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from sympy.core.parameters import global_parameters
from sympy.core.function import (expand_log, count_ops, _mexpand,
nfloat, expand_mul, expand)
from sympy.core.numbers import Float, I, pi, Rational
from sympy.core.numbers import Float, I, pi, Rational, equal_valued
from sympy.core.relational import Relational
from sympy.core.rules import Transform
from sympy.core.sorting import ordered
Expand Down Expand Up @@ -1758,7 +1758,7 @@ def compare(s, alt_s):
# get the non-commutative part
c_args, args = expr.args_cnc()
com_coeff = Mul(*c_args)
if com_coeff != 1:
if not equal_valued(com_coeff, 1):
return com_coeff*nc_simplify(expr/com_coeff, deep=deep)

inv_tot, args = _reduce_inverses(args)
Expand Down
5 changes: 5 additions & 0 deletions sympy/simplify/tests/test_simplify.py
Original file line number Diff line number Diff line change
Expand Up @@ -1080,3 +1080,8 @@ def test_reduce_inverses_nc_pow():
x, y = symbols("x y", positive=True)
assert expand((x*y)**Z) == x**Z * y**Z
assert simplify(x**Z * y**Z) == expand((x*y)**Z)

def test_nc_recursion_coeff():
X = symbols("X", commutative = False)
assert (2 * cos(pi/3) * X).simplify() == X
assert (2.0 * cos(pi/3) * X).simplify() == X

0 comments on commit bd0b3e6

Please sign in to comment.