sincos() を実装する最良の方法は何なのかはっきりしません。私はどこでも調べましたが、コンセンサスは、sinとcosを別々に計算するよりも優れているということです。以下は基本的に、sincos を使用するためにカーネルにあるものです。ただし、sinとcosを別々に実行するだけでクロックすると、遅くなります。cPtr と sPtr をどのように使用しているかに関係していると思います。より良い方法はありますか?
int idx = blockIdx.x * blockDim.x + threadIdx.x;
if (idx < dataSize)
{
idx += lower;
double f = ((double) idx) * deltaF;
double cosValue;
double sinValue;
double *sPtr = &sinValue;
double *cPtr = &cosValue;
sincos(twopit * f, sPtr, cPtr);
d_re[idx - lower] = cosValue;
d_im[idx - lower] = - sinValue;
//d_re[idx - lower] = cos(twopit * f);
//d_im[idx - lower] = - sin(twopit * f);
}