CUDA - 如何转换exp(1i * x)?

时间:2017-02-06 07:58:24

标签: cuda

我想像这样计算一些exp()。

float t = 5.0; cuComplex res = expf(1i*t);

但是,不能执行功能。我认为cuda编译器不支持复杂的参数expf()函数。

找一些例子描述exp(x + iy).. 我想要exp(x * i)....

1 个答案:

答案 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);
相关问题