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