_mm_rsqrt_pd() 的数据类型错误?

Wrong data type for _mm_rsqrt_pd()?

我是这些内在函数的新手,但想知道您是否可以帮助我。由于这个错误,我的程序无法编译。关于如何解决它的任何想法?我认为这应该有效,因为 r2_v 也是数据类型 __m128d

error: initializing '__m128d' (vector of 2 'double' values)
with an expression of incompatible type 'int'
                    __m128d r2inv_v = _mm_rsqrt_pd(r2_v);
                            ^         ~~~~~~~~~~~~~~~~~~

谢谢。

这是它出错的代码

__m128d r2_v = _mm_add_pd(_mm_add_pd(_mm_mul_pd(rx_v, rx_v),_mm_mul_pd(ry_v, ry_v)),_mm_add_pd(_mm_mul_pd(rz_v, rz_v),eps_v));
__m128d r2inv_v = _mm_rsqrt_pd(r2_v);

您需要创建一个 __m128d 类型的变量。您可以使用

创建一个

__m128d _mm_set_pd (double e1, double e0)

或者直接在调用中使用

_mm_rsqrt_pd( _mm_set_pd( d1, d2 ) );