diff --git a/arraycontext/impl/pyopencl/fake_numpy.py b/arraycontext/impl/pyopencl/fake_numpy.py index 71af653edbcd187bbea3ae972180c9e52de54863..d989d45acb83f1ee90ff0cd6559af762c553c4d1 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 67dc60ba4651a45a4426ad6609549c78a703ef85..14d9a968c83f4fc03a5de759665a79ce008e9347 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):