如何切换推力复矢量的虚部和reall部分

时间:2017-11-21 20:55:59

标签: c++ cuda thrust

我想构建一个返回推力复数的结构,该数字可以切换虚部和实部。但我的代码无法正常工作。错误是“没有合适的转换函数从”thrust :: complex“到”double“存在”这是我的代码。

struct im_harmonic
{
  im_harmonic(){}
  __device__ double operator()(thrust::complex<double>x){
   thrust::complex<double> z;
   z.real(x.imag());
   z.imag(-x.real());
   return z;
  }
}

1 个答案:

答案 0 :(得分:2)

您的运算符声明返回double,但在正文中,您返回的值为thrust::complex。这就是为什么错误&#34;没有合适的从复杂到双重的转换&#34;。为了解决这个问题,您可能必须声明您的运算符返回一个复数值:

thrust::complex<double> operator()(thrust::complex<double>x) { ..