Status: New
Owner: ----
Labels: Type-Defect Priority-Medium

New issue 4034 by [email protected]: concrete/products.py: _eval_product() infinite recursion
http://code.google.com/p/sympy/issues/detail?id=4034

x=symbols('x')
n,k = symbols('n k', integer=True, positive=True)
Product(x**2-2*x*cos(k*pi/n)+1, (k,1,n-1)).doit()

Produces infinite recursion:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pape/sympy/sympy/concrete/products.py", line 303, in doit
    g = self._eval_product(f, (i, a, b))
File "/home/pape/sympy/sympy/concrete/products.py", line 362, in _eval_product
    p = self._eval_product(p, (k, a, n))
File "/home/pape/sympy/sympy/concrete/products.py", line 362, in _eval_product
...

...
    p = self._eval_product(p, (k, a, n))
File "/home/pape/sympy/sympy/concrete/products.py", line 342, in _eval_product
    elif term.is_polynomial(k):
  File "/home/pape/sympy/sympy/core/expr.py", line 2211, in is_polynomial
    return self._eval_is_polynomial(syms)
File "/home/pape/sympy/sympy/core/add.py", line 439, in _eval_is_polynomial
    return all(term._eval_is_polynomial(syms) for term in self.args)
  File "/home/pape/sympy/sympy/core/add.py", line 439, in <genexpr>
    return all(term._eval_is_polynomial(syms) for term in self.args)
File "/home/pape/sympy/sympy/core/mul.py", line 913, in _eval_is_polynomial
    return all(term._eval_is_polynomial(syms) for term in self.args)
  File "/home/pape/sympy/sympy/core/mul.py", line 913, in <genexpr>
    return all(term._eval_is_polynomial(syms) for term in self.args)
File "/home/pape/sympy/sympy/core/expr.py", line 2141, in _eval_is_polynomial
    if self.free_symbols.intersection(syms) == set([]):
  File "/home/pape/sympy/sympy/core/basic.py", line 559, in free_symbols
    return reduce(union, [arg.free_symbols for arg in self.args], set())
  File "/home/pape/sympy/sympy/core/basic.py", line 559, in free_symbols
    return reduce(union, [arg.free_symbols for arg in self.args], set())
  File "/home/pape/sympy/sympy/core/basic.py", line 559, in free_symbols
    return reduce(union, [arg.free_symbols for arg in self.args], set())
  File "/home/pape/sympy/sympy/core/symbol.py", line 136, in free_symbols
    return set([self])
RuntimeError: maximum recursion depth exceeded


--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

--
You received this message because you are subscribed to the Google Groups 
"sympy-issues" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy-issues.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to