C++ 使用OpenCL在GPU上乘以两个复数

C++ 使用OpenCL在GPU上乘以两个复数,c++,kernel,gpu,opencl,c99,C++,Kernel,Gpu,Opencl,C99,我正在尝试编写一个基于OpenCL的代码,使用以下内核函数计算GPU上某些复数的exp(): #include <complex.h> inline float complex exp(float complex z) { return (exp(__real__(z)) * (cos(__imag__(z)) + sin(__imag__(z))*I )); } __kernel void calculate(__global float * c) {

我正在尝试编写一个基于OpenCL的代码,使用以下内核函数计算GPU上某些复数的
exp()

#include <complex.h>

inline float complex exp(float complex z) {    
    return (exp(__real__(z)) * (cos(__imag__(z)) + sin(__imag__(z))*I ));
}

__kernel void
calculate(__global float * c)
{    
    int nIndex = get_global_id(0);
    float complex rays = 1.0f + 1.0f * I;
    float complex ans = exp(rays); 
    c[nIndex] = __real__(ans * ans);
}
*
可以很好地处理其他复数,但它会在乘以
exp()
函数输出时产生错误。另外,我使用
+
-
运算符,并将
exp()
函数输出,没有任何问题。只是我对
*
/
操作符有问题

ASSERTION FAILED: I.hasStructRetAttr() == false