From fb2437d4a992b0267974b8d39b0993ce12cb2f14 Mon Sep 17 00:00:00 2001
From: markus holzer <markus.holzer@fau.de>
Date: Wed, 7 Oct 2020 13:51:24 +0200
Subject: [PATCH] Added test case for pow printing to llvm

---
 .../{test_jacobi_llvm.py => test_llvm.py}     | 47 ++++++++++++++++++-
 1 file changed, 46 insertions(+), 1 deletion(-)
 rename pystencils_tests/{test_jacobi_llvm.py => test_llvm.py} (72%)

diff --git a/pystencils_tests/test_jacobi_llvm.py b/pystencils_tests/test_llvm.py
similarity index 72%
rename from pystencils_tests/test_jacobi_llvm.py
rename to pystencils_tests/test_llvm.py
index 953432c11..54c60ff45 100644
--- a/pystencils_tests/test_jacobi_llvm.py
+++ b/pystencils_tests/test_llvm.py
@@ -6,11 +6,11 @@ try:
     from pystencils.cpu.cpujit import get_llc_command
     from pystencils import Assignment, Field, show_code
     import numpy as np
+    import sympy as sp
 except ModuleNotFoundError:
     pytest.importorskip("llvmlite")
 
 
-
 def test_jacobi_fixed_field_size():
     size = (30, 20)
 
@@ -93,5 +93,50 @@ def test_jacobi_variable_field_size():
     np.testing.assert_almost_equal(error, 0.0)
 
 
+def test_pow_llvm():
+    size = (30, 20)
+
+    src_field_llvm = 4 * np.ones(size)
+    dst_field_llvm = np.zeros(size)
+
+    f = Field.create_from_numpy_array("f", src_field_llvm)
+    d = Field.create_from_numpy_array("d", dst_field_llvm)
+
+    ur = Assignment(d[0, 0], sp.Pow(f[0, 0], -1.0))
+    ast = create_kernel([ur])
+
+    jit = generate_and_jit(ast)
+    jit('kernel', dst_field_llvm, src_field_llvm)
+    assert np.all(0.25 == dst_field_llvm)
+
+    ur = Assignment(d[0, 0], sp.Pow(f[0, 0], 0.5))
+    ast = create_kernel([ur])
+
+    jit = generate_and_jit(ast)
+    jit('kernel', dst_field_llvm, src_field_llvm)
+    assert np.all(2.0 == dst_field_llvm)
+
+    ur = Assignment(d[0, 0], sp.Pow(f[0, 0], 2.0))
+    ast = create_kernel([ur])
+
+    jit = generate_and_jit(ast)
+    jit('kernel', dst_field_llvm, src_field_llvm)
+    assert np.all(16.0 == dst_field_llvm)
+
+    ur = Assignment(d[0, 0], sp.Pow(f[0, 0], 3.0))
+    ast = create_kernel([ur])
+
+    jit = generate_and_jit(ast)
+    jit('kernel', dst_field_llvm, src_field_llvm)
+    assert np.all(64.0 == dst_field_llvm)
+
+    ur = Assignment(d[0, 0], sp.Pow(f[0, 0], 4.0))
+    ast = create_kernel([ur])
+
+    jit = generate_and_jit(ast)
+    jit('kernel', dst_field_llvm, src_field_llvm)
+    assert np.all(256.0 == dst_field_llvm)
+
+
 if __name__ == "__main__":
     test_jacobi_fixed_field_size_gpu()
-- 
GitLab