From 4cfa839ae57af1d83aa8f4bbddf3a38daf0aaa11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Ingvar=20Dahlgren?= Date: Sun, 12 Feb 2023 10:01:08 +0100 Subject: [PATCH 1/3] Change lambdify's default for backend to llvm when available --- symengine/lib/symengine_wrapper.pyx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/symengine/lib/symengine_wrapper.pyx b/symengine/lib/symengine_wrapper.pyx index 7cbf148c..558b64fd 100644 --- a/symengine/lib/symengine_wrapper.pyx +++ b/symengine/lib/symengine_wrapper.pyx @@ -5203,7 +5203,7 @@ def Lambdify(args, *exprs, cppbool real=True, backend=None, order='C', Whether datatype is ``double`` (``double complex`` otherwise). backend : str 'llvm' or 'lambda'. When ``None`` the environment variable - 'SYMENGINE_LAMBDIFY_BACKEND' is used (taken as 'lambda' if unset). + 'SYMENGINE_LAMBDIFY_BACKEND' is used (taken as 'llvm' if available, otherwise 'lambda'). order : 'C' or 'F' C- or Fortran-contiguous memory layout. Note that this affects broadcasting: e.g. a (m, n) matrix taking 3 arguments and given a @@ -5235,7 +5235,11 @@ def Lambdify(args, *exprs, cppbool real=True, backend=None, order='C', """ if backend is None: - backend = os.getenv('SYMENGINE_LAMBDIFY_BACKEND', "lambda") + IF HAVE_SYMENGINE_LLVM: + backend_default = 'llvm' + ELSE: + backend_default = 'lambda' + backend = os.getenv('SYMENGINE_LAMBDIFY_BACKEND', backend_default) if backend == "llvm": IF HAVE_SYMENGINE_LLVM: if dtype == None: From 7cccac0816695291bb0182aea99e488025a5c4b8 Mon Sep 17 00:00:00 2001 From: Bjorn Date: Tue, 14 Feb 2023 19:18:50 +0100 Subject: [PATCH 2/3] Update symengine/lib/symengine_wrapper.pyx Co-authored-by: Isuru Fernando --- symengine/lib/symengine_wrapper.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symengine/lib/symengine_wrapper.pyx b/symengine/lib/symengine_wrapper.pyx index 558b64fd..3184c7d5 100644 --- a/symengine/lib/symengine_wrapper.pyx +++ b/symengine/lib/symengine_wrapper.pyx @@ -5235,7 +5235,7 @@ def Lambdify(args, *exprs, cppbool real=True, backend=None, order='C', """ if backend is None: - IF HAVE_SYMENGINE_LLVM: + IF HAVE_SYMENGINE_LLVM and real: backend_default = 'llvm' ELSE: backend_default = 'lambda' From 721312ee9e41691c32cfbda97c5673fb4f983b87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Ingvar=20Dahlgren?= Date: Tue, 14 Feb 2023 19:58:30 +0100 Subject: [PATCH 3/3] avoid using Cython compile-time 'IF' --- symengine/lib/symengine_wrapper.pyx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/symengine/lib/symengine_wrapper.pyx b/symengine/lib/symengine_wrapper.pyx index 3184c7d5..4c5f0f82 100644 --- a/symengine/lib/symengine_wrapper.pyx +++ b/symengine/lib/symengine_wrapper.pyx @@ -5235,8 +5235,8 @@ def Lambdify(args, *exprs, cppbool real=True, backend=None, order='C', """ if backend is None: - IF HAVE_SYMENGINE_LLVM and real: - backend_default = 'llvm' + IF HAVE_SYMENGINE_LLVM: + backend_default = 'llvm' if real else 'lambda' ELSE: backend_default = 'lambda' backend = os.getenv('SYMENGINE_LAMBDIFY_BACKEND', backend_default)