diff --git a/pymbolic/interop/common.py b/pymbolic/interop/common.py index 3f55c2932e3c926b8cec42fa10f696321ac46449..b0b73e5374c1bece0689bae6e79a6f4ef8f1faa4 100644 --- a/pymbolic/interop/common.py +++ b/pymbolic/interop/common.py @@ -111,12 +111,6 @@ class SympyLikeToPymbolicMapper(SympyLikeMapperBase): return prim.CommonSubexpression( self.rec(expr.args[0]), expr.prefix) - def map_Indexed(self, expr): - return prim.Subscript( - self.rec(expr.args[0].args[0]), - tuple(self.rec(i) for i in expr.args[1:]) - ) - def not_supported(self, expr): # noqa if isinstance(expr, int): return expr @@ -150,12 +144,6 @@ class PymbolicToSympyLikeMapper(EvaluationMapper): else: self.raise_conversion_error(expr) - def map_subscript(self, expr): - return self.sym.tensor.indexed.Indexed( - self.rec(expr.aggregate), - *tuple(self.rec(i) for i in expr.index_tuple) - ) - def map_substitution(self, expr): return self.sym.Subs(self.rec(expr.child), tuple(self.sym.Symbol(v) for v in expr.variables), diff --git a/pymbolic/interop/sympy.py b/pymbolic/interop/sympy.py index b02d5e8b692040abb6e46cd8fecde95d4ad2d035..6d7afc8744413ca3bc2a720f4f20465193313fd5 100644 --- a/pymbolic/interop/sympy.py +++ b/pymbolic/interop/sympy.py @@ -60,6 +60,12 @@ class SympyToPymbolicMapper(SympyLikeToPymbolicMapper): def map_long(self, expr): return long(expr) # noqa + def map_Indexed(self, expr): # noqa + return prim.Subscript( + self.rec(expr.args[0].args[0]), + tuple(self.rec(i) for i in expr.args[1:]) + ) + # }}} @@ -77,6 +83,12 @@ class PymbolicToSympyMapper(PymbolicToSympyLikeMapper): return self.sym.Derivative(self.rec(expr.child), *[self.sym.Symbol(v) for v in expr.variables]) + def map_subscript(self, expr): + return self.sym.tensor.indexed.Indexed( + self.rec(expr.aggregate), + *tuple(self.rec(i) for i in expr.index_tuple) + ) + # }}} diff --git a/test/test_sympy.py b/test/test_sympy.py index 0bcd449defb02daaf79b31ee7d64100d0f0b83f5..c3b038e4b5ccca7ec30544bc9ae74db01ab557fb 100644 --- a/test/test_sympy.py +++ b/test/test_sympy.py @@ -28,7 +28,6 @@ import pymbolic.primitives as prim x_, y_, i_, j_ = (prim.Variable(s) for s in "x y i j".split()) - # {{{ to pymbolic test def _test_to_pymbolic(mapper, sym, use_symengine): @@ -101,7 +100,7 @@ def _test_from_pymbolic(mapper, sym, use_symengine): assert mapper(x_[0]) == sym.Symbol("x_0") else: i, j = sym.symbols("i,j") - assert mapper(x_[i_,j_]) == sym.tensor.indexed.Indexed(x, i, j) + assert mapper(x_[i_, j_]) == sym.tensor.indexed.Indexed(x, i, j) assert mapper(prim.Variable("f")(x_)) == sym.Function("f")(x)