在 C++ 中使用内部函数计算倒数
Posted
技术标签:
【中文标题】在 C++ 中使用内部函数计算倒数【英文标题】:Computing reciprocal using intrinsics functions in C++ 【发布时间】:2017-03-16 05:18:13 【问题描述】:我正在尝试使用内在算术计算 1/x,并假设 x 是双精度数。我试图实现如下计算:
__inline__ double __attribute__((const)) rcp_d (double x )
double res;
_mm_store_pd(&res,
_mm_rcp_ps(_mm_load_pd(&x))
);
return res;
但我得到了错误:
error: cannot convert ‘__m128d aka __vector(2) double’ to ‘__m128 aka __vector(4) float’ for argument ‘1’ to ‘__m128 _mm_rcp_ps(__m128)’
_mm_rcp_ps(_mm_load_pd(&x))
为了正确进行计算有什么建议吗?
【问题讨论】:
【参考方案1】:_mm_rcp_ps
适用于 __mm128
(4xfloat) 数据类型,而不是双精度数。您应该改用 _mm_rcp14_pd
,尽管此指令仅在支持 AVX512 扩展的较新 CPU 上可用。
【讨论】:
以上是关于在 C++ 中使用内部函数计算倒数的主要内容,如果未能解决你的问题,请参考以下文章