Files
app-store-optimization/skills/loki-mode/benchmarks/results/2026-01-05-10-37-54/swebench-loki-patches/sympy__sympy-13915.patch

70 lines
2.5 KiB
Diff

# sympy__sympy-13915
# Loki Mode Multi-Agent Patch
# Attempts: 1
--- a/sympy/core/mul.py
+++ b/sympy/core/mul.py
@@ -2,7 +2,7 @@
from collections import defaultdict
from functools import cmp_to_key
-import operator
+import operator as operator_module
from .sympify import sympify
from .basic import Basic
@@ -161,6 +161,18 @@ def _gather(c_powers):
new_c_powers.append([b, e])
c_powers = new_c_powers
c_powers = [[b, c_part(e)] for b, e in c_powers]
+ # Check for bases containing infinity with zero exponent -> nan
+ final_c_powers = []
+ for b, e in c_powers:
+ if e == 0:
+ # Check if base contains any infinity
+ if b.has(S.ComplexInfinity, S.Infinity, S.NegativeInfinity):
+ # (expr_with_infinity)^0 is undefined
+ return [S.NaN], [], None
+ # Otherwise skip (b^0 = 1)
+ else:
+ final_c_powers.append([b, e])
+ c_powers = final_c_powers
return c_powers, num_exp, neg1e
@@ -366,7 +378,7 @@ def flatten(cls, seq):
if coeff is S.ComplexInfinity:
# zoo might be
# infinite_real + bounded_im
- # bounded_real + infinite_im
+ # bounded_real + infinite_im
# infinite_real + infinite_im
# and target_expr as one of the following
# finite + infinities
@@ -505,7 +517,7 @@ def flatten(cls, seq):
# we are done
if (coeff is S.Infinity or coeff is S.NegativeInfinity):
c_part.append(coeff)
- new_nc_part = [i**(r*s) for i, r, s in zip(i_nonneg, nonneg, signs) if s]
+ new_nc_part = [i**(r*s) for i, r, s in zip(i_nonneg, nonneg, signs) if s]
c_part.extend(new_nc_part)
c_part.extend([i**nc_part[b] for b, i in nc_dict.items() if i.is_Number])
@@ -585,7 +597,7 @@ def flatten(cls, seq):
c_part.insert(0, coeff)
- # we are done
+ # we are done
if (coeff is S.Infinity or coeff is S.NegativeInfinity):
new_nc_part = [tp**nc_part[tp] for tp in nc_dict if tp.is_positive]
c_part.extend(new_nc_part)
@@ -682,7 +694,7 @@ def _eval_power(b, e):
return S.NegativeOne**e*Mul(
*[s.func(b, e) for b, e in c_powers]) # Mul, not Mul!
- p = Pow(b, e, evaluate=False)
+ p = Pow(b, e, evaluate=False)
if e.is_Rational or e.is_Float:
return p._eval_expand_power_base()