2017-03-16 1 views
0

내장 연산을 사용하고 x가 double이라고 가정하고 1/x를 계산하려고합니다. 나는 다음과 같이 계산을 달성하기 위해 노력하고 있어요 :C++에서 내장 함수를 사용하여 역수 계산

__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)) 

제대로 계산을 수행하기 위해 어떤 제안을?

답변

0

_mm_rcp_ps은 복식이 아닌 __mm128 (4xfloat) 데이터 형식으로 작동합니다. 이 명령어는 AVX512 확장을 지원하는 최신 CPU에서만 사용할 수 있지만 _mm_rcp14_pd을 사용해야합니다.

관련 문제