2016-10-14 5 views
0

나는 내 문제가__m128 변수에 전체 복소수를 어떻게 넣을 수 있습니까?

void function(complex float* A, complex float* B, complex float alpha) { 

내가 __m128 같은 알파를 사용하려면이 기능을 가지고있다 C.에서 내장 함수를 사용하여 너무 많은 경험을 가지고 있지만하지 않는 나는이

__m128 alfa = _mm_load_ps((float const *)&alpha); 

알파를 할 경우에만 복소수의 실수 부분을 얻습니다.

어떻게 전체 복소수를 __m128 alfa 개까지 가질 수 있습니까?

답변

1

이 코드는 나를 위해 잘 작동 :

complex float a __attribute__ ((aligned (16))) = 5 + 10*I; 
__m128 f = _mm_load_ps((float const *)&a); // requires 16B alignment 
float *p = (float *)&f; 
printf("real(0): %f, imag(1): %f, (2): %f, (3): %f\n", p[0], p[1], p[2], p[3]); 

인쇄

real(0): 5.000000, imag(1): 10.000000, (2): 0.000000, (3): 0.000000 

당신이 alpha 0이 아닌 허수 부분이 있는지 있습니까? 당신은 단지 당신이 진짜 부분을 얻고 있다는 것을 어떻게 압니까?

+0

나는이 복잡한 플로트를 시도했다. alphaA __attribute__ ((aligned (16))) = alpha; – CSR95

+0

다음에이 표현식 __m128이옵니다. alfa = _mm_load_ps ((float const *) & alphaA); 진짜 (0) : 0.335223, imag (1) : -0.911647, (2) : 0.335223, (3) : -0.911647. 문제는 내가 2 개의 복소수를 곱하고 싶기 때문에 그렇게하는 방법이라고 생각합니다. 어떻게 곱셈을 할 수 있는지 알고 있습니까? – CSR95

+0

알파에는 어떤 값이 있습니까? – Phil

관련 문제