我想像这样计算一些exp()。
float t = 5.0;
cuComplex res = expf(1i*t);
但是,不能执行功能。我认为cuda编译器不支持复杂的参数expf()函数。
找一些例子描述exp(x + iy).. 我想要exp(x * i)....
答案 0 :(得分:1)
解决了自己...
__device__ __forceinline__ cuComplex _exp (cuComplex z)
{
cuComplex res;
float t = expf(z.x);
sincosf(z.y, &res.y, &res.x);
res.x *= t;
res.y *= t;
return res;
}
部分来源
/* 1i*t = 0+ti | -1i*t = 0-ti */
cuComplex _gbp, _gfp;
_gbp.x = 0;
_gbp.y = t;
_gfp.x = 0;
_gfp.y = -t;
cuComplex res_b = _exp(_gbp);
cuComplex res_f = _exp(_gfp);