2014-09-14 3 views
4

long을 double 형으로 입력하는 방법을 알아 내는데 어려움이 있습니다. 나는 긴 정수를 읽고 AVX 레지스터의 계산에 사용하려고합니다. 그러나 long int를 AVX 레지스터 내에서 사용되는 배정도 부동 소수점 형으로 캐스팅하는 방법을 알아낼 수는 없습니다.x86-64 double to long double로 변환

long int를 double precision float로 바꾸려면 어떻게해야합니까? 만 1 ~ 100 사이의 값을 사용하는 경우

+0

당신은 AVX 또는 AVX2 AFAIK이 쉽게 AVX512에서가 아니라 할 수 있습니다. 해결 방법이있을 수 있습니다 - 당신의 long int의 범위는 무엇이며 얼마나 정밀도가 필요합니까? –

+0

4 바이트'long int' 또는 8 바이트'long int'? –

+0

@barakmanos : x86-64 이후로 거의 8 바이트입니다. –

답변

4

는 다음 4 바이트 int은 충분히 크다 :

; double x = (double)n 
cvtsi2sd xmm0,dword ptr [n] 
movsd  mmword ptr [x],xmm0 
+0

완벽하게 작동했습니다! 정말 고맙습니다! – RNikoopour

+0

@DhbDhb : 환영합니다 :) –