From 9399fb7a90bfe3c5025b11f47cd016178ae487ac Mon Sep 17 00:00:00 2001
From: Kaushik Kulkarni <kaushikcfd@gmail.com>
Date: Fri, 26 May 2023 10:11:32 -0500
Subject: [PATCH] Add logical_(and|not|or) to (BasePytato|PyOpenCL)ArrayContext

---
 arraycontext/impl/pyopencl/fake_numpy.py | 9 +++++++++
 arraycontext/impl/pytato/fake_numpy.py   | 3 ++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/arraycontext/impl/pyopencl/fake_numpy.py b/arraycontext/impl/pyopencl/fake_numpy.py
index 71af653..d989d45 100644
--- a/arraycontext/impl/pyopencl/fake_numpy.py
+++ b/arraycontext/impl/pyopencl/fake_numpy.py
@@ -259,6 +259,15 @@ class PyOpenCLFakeNumpyNamespace(LoopyBasedFakeNumpyNamespace):
     def not_equal(self, x, y):
         return rec_multimap_array_container(operator.ne, x, y)
 
+    def logical_or(self, x, y):
+        return rec_multimap_array_container(cl_array.logical_or, x, y)
+
+    def logical_and(self, x, y):
+        return rec_multimap_array_container(cl_array.logical_and, x, y)
+
+    def logical_not(self, x):
+        return rec_map_array_container(cl_array.logical_not, x)
+
     # }}}
 
     # {{{ mathematical functions
diff --git a/arraycontext/impl/pytato/fake_numpy.py b/arraycontext/impl/pytato/fake_numpy.py
index 67dc60b..14d9a96 100644
--- a/arraycontext/impl/pytato/fake_numpy.py
+++ b/arraycontext/impl/pytato/fake_numpy.py
@@ -54,11 +54,12 @@ class PytatoFakeNumpyNamespace(LoopyBasedFakeNumpyNamespace):
         "sin", "cos", "tan", "arcsin", "arccos", "arctan",
         "sinh", "cosh", "tanh", "exp", "log", "log10",
         "sqrt", "abs", "isnan", "real", "imag", "conj",
+        "logical_not",
         })
 
     _pt_multi_ary_funcs = frozenset({
         "arctan2", "equal", "greater", "greater_equal", "less", "less_equal",
-        "not_equal", "minimum", "maximum", "where",
+        "not_equal", "minimum", "maximum", "where", "logical_and", "logical_or",
     })
 
     def _get_fake_numpy_linalg_namespace(self):
-- 
GitLab