2017-02-06 7 views
0

私はこのようにいくつかのexp()を計算したいと思います。CUDA - どのようにexp(1i * x)を変換するのですか?

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

しかし、機能を実行することはできません。コンパイラは複雑な引数expf()関数のようにサポートしていないと私は思う。

いくつかの例は、EXP(X + IY)を記述する見つける.. 私はexpは(X * I)....

+0

オイラーの式ですか? https://en.wikipedia.org/wiki/Euler's_formula – talonmies

+0

自己解決.. thanx – James

答えて

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); 
+1

も参照[この回答](https://devtalk.nvidia.com/default/topic/505308/cuda-programming-and -performance/complex-number-exponential-function/post/3603793 /#3603793)をNVIDIAフォーラムで公開しました。 – njuffa

+0

ええ。それはほぼ同じです – James

関連する問題