diff --git a/sumpy/expansion/multipole.py b/sumpy/expansion/multipole.py index 4e226cd96edfd7c72973116913a11474775b694c..92ae80f3308b4bf8820fbc00da9229725058e3e1 100644 --- a/sumpy/expansion/multipole.py +++ b/sumpy/expansion/multipole.py @@ -178,11 +178,11 @@ class VolumeTaylorMultipoleExpansionBase(MultipoleExpansionBase): assert n >= k from sympy import binomial contrib *= (binomial(n, k) - * dvec[idim]**(n-k)) + * sym.UnevaluatedExpr(dvec[idim]/tgt_rscale)**(n-k)) result[i] += ( contrib - * (src_rscale**sum(src_mi) / tgt_rscale**sum(tgt_mi))) + * sym.UnevaluatedExpr(src_rscale/tgt_rscale)**sum(src_mi)) result[i] /= mi_factorial(tgt_mi) diff --git a/sumpy/symbolic.py b/sumpy/symbolic.py index c213f4b9c069ddebc7b3a6ea788e7e3e3125e234..c7ed61e60c937cd18020b1ced0bd9629c5a0aa30 100644 --- a/sumpy/symbolic.py +++ b/sumpy/symbolic.py @@ -98,6 +98,19 @@ def _coeff_isneg(a): return a.is_Number and a.is_negative +have_unevaluated_expr = False +if not USE_SYMENGINE: + try: + from sympy import UnevaluatedExpr + have_unevaluated_expr = True + except ImportError: + pass + +if not have_unevaluated_expr: + def UnevaluatedExpr(x): # noqa + return x + + # {{{ debugging of sympy CSE via Maxima class _DerivativeKiller(IdentityMapperBase):