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

73 lines
2.8 KiB
Diff

# sympy__sympy-20442
# Loki Mode Multi-Agent Patch
# Attempts: 1
--- a/sympy/physics/units/util.py
+++ b/sympy/physics/units/util.py
@@ -14,7 +14,7 @@ from sympy.physics.units.dimensions import Dimension
from sympy.physics.units.prefixes import Prefix
from sympy.physics.units.quantities import Quantity
from sympy.utilities.iterables import sift
-from sympy.matrices.dense import zeros
+from sympy.core.add import Add
def _get_conversion_matrix_for_expr(expr, target_units, unit_system):
@@ -25,19 +25,24 @@ def _get_conversion_matrix_for_expr(expr, target_units, unit_system):
expr_dim = Dimension(unit_system.get_dimensional_expr(expr))
dim_dependencies = unit_system.get_dimension_dependencies(expr_dim)
- target_dims = [Dimension(unit_system.get_dimensional_expr(x)) for x in target_units]
- canon_dim_units = {i for x in target_dims for i in unit_system.get_dimension_dependencies(x)}
+ target_dims = [unit_system.get_dimension_dependencies(
+ Dimension(unit_system.get_dimensional_expr(x))) for x in target_units]
+ canon_dim_units = {i for x in target_dims for i in x}
canon_expr_units = set(dim_dependencies)
if not canon_expr_units.issubset(canon_dim_units):
return None
- camat = zeros(len(googol_dim_dependencies), len(target_dims))
- for i, td in enumerate(target_dims):
- canon_target_dim = unit_system.get_dimension_dependencies(td)
- for j, d in enumerate(canon_dim_units):
- camat[j, i] = canon_target_dim.get(d, 0)
-
seen = set()
canon_dim_units = [i for i in canon_dim_units if not (i in seen or seen.add(i))]
- return camat, canon_dim_units
+
+ camat = Matrix([[td.get(d, 0) for td in target_dims] for d in canon_dim_units])
+ exprmat = Matrix([dim_dependencies.get(d, 0) for d in canon_dim_units])
+
+ try:
+ res_exponents = camat.solve(exprmat)
+ except ValueError:
+ return None
+
+ return res_exponents
def convert_to(expr, target_units, unit_system="SI"):
@@ -101,19 +106,14 @@ def convert_to(expr, target_units, unit_system="SI"):
if depmat is None:
return expr
- camat, canon_dim_units = depmat
-
- expr_dim = Dimension(unit_system.get_dimensional_expr(expr))
- dim_dependencies = unit_system.get_dimension_dependencies(expr_dim)
- exprmat = Matrix([dim_dependencies.get(k, 0) for k in canon_dim_units])
-
- res_exponents = camat.solve_least_squares(exprmat, method=None)
+ res_exponents = depmat
res_exponents = [i for i in res_exponents]
expr_scale_factor = get_total_scale_factor(expr)
return expr_scale_factor * Mul(*[target_unit**exp for target_unit, exp in zip(target_units, res_exponents)])
from sympy.core.compatibility import reduce
+from sympy.matrices.dense import Matrix
from functools import reduce
from sympy.core.mul import Mul
from sympy import Pow