diff --git a/test/test_kernels.py b/test/test_kernels.py index 076fb22b95ccab9e8ee805cd0b6a1502b6ac61d2..606e383b7c895a3fdec97dbaa42b7958cd63dc8d 100644 --- a/test/test_kernels.py +++ b/test/test_kernels.py @@ -659,7 +659,7 @@ def test_m2m_and_l2l_exprs_simpler(base_knl, local_expn_class, mpole_expn_class, mpole_expn = mpole_expn_class(knl, order=order) local_expn = local_expn_class(knl, order=order) - from sumpy.symbolic import make_sym_vector, Symbol + from sumpy.symbolic import make_sym_vector, Symbol, USE_SYMENGINE dvec = make_sym_vector("d", knl.dim) src_coeff_exprs = [Symbol("src_coeff%d" % i) for i in range(len(mpole_expn))] @@ -670,15 +670,24 @@ def test_m2m_and_l2l_exprs_simpler(base_knl, local_expn_class, mpole_expn_class, dvec, tgt_rscale) slower_m2m = mpole_expn.translate_from(mpole_expn, src_coeff_exprs, src_rscale, dvec, tgt_rscale, _fast_version=False) + + def _check_equal(expr1, expr2): + if USE_SYMENGINE: + return float((expr1 - expr2).expand()) == 0.0 + else: + # with sympy we are using UnevaluatedExpr and expand doesn't expand it + # Running doit replaces UnevaluatedExpr with evaluated exprs + return float((expr1 - expr2).doit().expand()) == 0.0 + for expr1, expr2 in zip(faster_m2m, slower_m2m): - assert float((expr1 - expr2).expand()) == 0.0 + assert _check_equal(expr1, expr2) faster_l2l = local_expn.translate_from(local_expn, src_coeff_exprs, src_rscale, dvec, tgt_rscale) slower_l2l = local_expn.translate_from(local_expn, src_coeff_exprs, src_rscale, dvec, tgt_rscale, _fast_version=False) for expr1, expr2 in zip(faster_l2l, slower_l2l): - assert float((expr1 - expr2).expand()) == 0.0 + assert _check_equal(expr1, expr2) # You can test individual routines by typing