diff --git a/pyopencl/elementwise.py b/pyopencl/elementwise.py index 8bcd174dd5a7741fd043ad46cacb2c46a55a2bfb..8d6941d5c9847abb804e2b806362e74643fbd457 100644 --- a/pyopencl/elementwise.py +++ b/pyopencl/elementwise.py @@ -440,6 +440,9 @@ def get_copy_kernel(context, dtype_dest, dtype_src): if dtype_dest.kind == "c" != dtype_src.kind: src = "%s_fromreal(%s)" % (complex_dtype_to_name(dtype_dest), src) + if dtype_dest.kind == "c" and dtype_src != dtype_dest: + src = "%s_cast(%s)" % (complex_dtype_to_name(dtype_dest), src), + return get_elwise_kernel(context, "%(tp_dest)s *dest, %(tp_src)s *src" % { "tp_dest": dtype_to_ctype(dtype_dest),