Math arg()的CUDA数学库等效于什么? C++标准库有一个函数叫做它返回复数参数的相位角(或角度分量),以弧度表示
我需要在CUDA内核中调用类似于Math arg()的CUDA数学库等效于什么? C++标准库有一个函数叫做它返回复数参数的相位角(或角度分量),以弧度表示,math,cuda,complex-numbers,Math,Cuda,Complex Numbers,我需要在CUDA内核中调用类似于std::arg()。CUDA数学库或CUDA复杂数学库中是否有等效函数?对注释进行小结和扩展: CUDA数学库不直接支持复杂值的arg()函数 cuComplex.h非常初级。正如@njuffa所指出的:它只有库布拉斯和库夫特所需要的 您可以也应该使用atan2(y,x)(或std::atan2(y,x)),其中y是虚部,而x是实部 那么,推力呢推力::complex毕竟有一个arg()方法吗 这就是它的实现方式: template <typename
std::arg()。CUDA数学库或CUDA复杂数学库中是否有等效函数?对注释进行小结和扩展:
- CUDA数学库不直接支持复杂值的
arg()
函数
cuComplex.h
非常初级。正如@njuffa所指出的:它只有库布拉斯和库夫特所需要的
- 您可以也应该使用
atan2(y,x)
(或std::atan2(y,x)
),其中y
是虚部,而x
是实部
那么,推力呢<代码>推力::complex
毕竟有一个arg()
方法吗
这就是它的实现方式:
template <typename T>
__host__ __device__
T arg(const complex<T>& z)
{
// Find `atan2` by ADL.
using std::atan2;
return atan2(z.imag(), z.real());
}
模板
__主机设备__
T参数(常数复合体和z)
{
//通过ADL查找'atan2'。
使用std::atan2;
返回atan2(z.imag(),z.real());
}
(另见……)。。。因此,
atan2()
这里也有。要对注释进行总结和扩展:
- CUDA数学库不直接支持复杂值的
函数arg()
非常初级。正如@njuffa所指出的:它只有库布拉斯和库夫特所需要的cuComplex.h
- 您可以也应该使用
(或atan2(y,x)
),其中std::atan2(y,x)
是虚部,而y
是实部x
arg()
方法吗
这就是它的实现方式:
template <typename T>
__host__ __device__
T arg(const complex<T>& z)
{
// Find `atan2` by ADL.
using std::atan2;
return atan2(z.imag(), z.real());
}
模板
__主机设备__
T参数(常数复合体和z)
{
//通过ADL查找'atan2'。
使用std::atan2;
返回atan2(z.imag(),z.real());
}
(另见……)。。。因此,
atan2()
也在那里。我查看了cuComplex.h
,它没有退出。CUDA对复数只有基本的支持;基本上是库布拉斯和库夫特所要求的。您可以轻松地将函数计算为arg(x+iy)=atan2(y,x)。CUDA支持C++标准数学函数<代码> ATAN2()<代码>。我只是做了一些类似的事情,它起了作用:double myPhaseAngle=atan2(cuCimag(myComplexDouble),cuCreal(myComplexDouble));是的,也就是说,它不需要广泛使用其他推力构造。CUDA对复数只有基本的支持;基本上是库布拉斯和库夫特所要求的。您可以轻松地将函数计算为arg(x+iy)=atan2(y,x)。CUDA支持C++标准数学函数<代码> ATAN2()<代码>。我只是做了一些类似的事情,它起了作用:double myPhaseAngle=atan2(cuCimag(myComplexDouble),cuCreal(myComplexDouble));是的,也就是说,它不需要广泛使用其他推力结构。