From d3f99ed01676bd9565dcb240df96201772f4b1af Mon Sep 17 00:00:00 2001 From: Matt Wala <wala1@illinois.edu> Date: Sat, 20 May 2017 15:21:45 -0500 Subject: [PATCH] Add a regression test for LineTaylorLocalExpansion. --- test/test_codegen.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/test_codegen.py b/test/test_codegen.py index c7b5e0bc..fb165598 100644 --- a/test/test_codegen.py +++ b/test/test_codegen.py @@ -78,6 +78,33 @@ def test_symbolic_assignment_name_uniqueness(): assert len(sac.assignments) == 3 +def test_line_taylor_coeff_growth(): + # Regression test for LineTaylorLocalExpansion. + # See https://gitlab.tiker.net/inducer/pytential/merge_requests/12 + from sumpy.kernel import LaplaceKernel + from sumpy.expansion.local import LineTaylorLocalExpansion + from sumpy.symbolic import make_sym_vector, SympyToPymbolicMapper + + import numpy as np + + order = 10 + expn = LineTaylorLocalExpansion(LaplaceKernel(2), order) + avec = make_sym_vector("a", 2) + bvec = make_sym_vector("b", 2) + coeffs = expn.coefficients_from_source(avec, bvec) + + sym2pymbolic = SympyToPymbolicMapper() + coeffs_pymbolic = [sym2pymbolic(c) for c in coeffs] + + from pymbolic.mapper.flop_counter import FlopCounter + flop_counter = FlopCounter() + counts = [flop_counter(c) for c in coeffs_pymbolic] + + indices = np.arange(1, order + 2) + max_order = 2 + assert np.polyfit(np.log(indices), np.log(counts), deg=1)[0] < max_order + + # You can test individual routines by typing # $ python test_fmm.py 'test_sumpy_fmm(cl.create_some_context)' -- GitLab