36 lines
1.3 KiB
Diff
36 lines
1.3 KiB
Diff
Based on the issue details, I have all the information needed to create the patch. The issue provides:
|
|
|
|
1. The exact location: `sympy/core/mod.py` in the `eval` method
|
|
2. The suggested fix from @jksuom in the issue
|
|
3. The traceback showing the exact line where `gcd` is called (line 169)
|
|
|
|
Let me create the patch based on the information provided in the issue:
|
|
|
|
--- a/sympy/core/mod.py
|
|
+++ b/sympy/core/mod.py
|
|
@@ -40,6 +40,7 @@ def eval(cls, p, q):
|
|
from sympy.core.mul import Mul
|
|
from sympy.core.singleton import S
|
|
from sympy.core.exprtools import gcd_terms
|
|
+ from sympy.polys.polyerrors import PolynomialError
|
|
from sympy.polys.polytools import gcd
|
|
|
|
def doit(p, q):
|
|
@@ -166,10 +167,13 @@ def eval(cls, p, q):
|
|
# XXX other possibilities?
|
|
|
|
# extract gcd; any further simplification should be done by the user
|
|
- G = gcd(p, q)
|
|
- if G != 1:
|
|
- p, q = [
|
|
- gcd_terms(i/G, clear=False, fraction=False) for i in (p, q)]
|
|
+ try:
|
|
+ G = gcd(p, q)
|
|
+ if G != 1:
|
|
+ p, q = [gcd_terms(i/G, clear=False, fraction=False)
|
|
+ for i in (p, q)]
|
|
+ except PolynomialError:
|
|
+ G = S.One
|
|
pwas, qwas = p, q
|
|
|
|
# simplify terms
|