Thông thường tôi làm việc với vectơ 3D sử dụng các loại sau đây:C - Làm thế nào để truy cập vào các yếu tố của vector sử dụng phần mở rộng vector GCC SSE
typedef vec3_t float[3];
khởi vectơ sử dụng smth. như:
vec3_t x_basis = {1.0, 0.0, 0.0};
vec3_t y_basis = {0.0, 1.0, 0.0};
vec3_t z_basis = {0.0, 0.0, 1.0};
và truy cập chúng bằng smth. như:
x_basis[X] * y_basis[X] + ...
Bây giờ tôi cần một véc tơ arithmetics sử dụng hướng dẫn SSE. Tôi có mã sau đây:
typedef float v4sf __attribute__ ((mode(V4SF)))
int main(void)
{
v4sf a,b,c;
a = (v4sf){0.1f,0.2f,0.3f,0.4f};
b = (v4sf){0.1f,0.2f,0.3f,0.4f};
c = (v4sf){0.1f,0.2f,0.3f,0.4f};
a = b + c;
printf("a=%f \n", a);
return 0;
}
GCC hỗ trợ cách này. Nhưng ... Đầu tiên, nó mang lại cho tôi 0,0000000 kết quả. Thứ hai, tôi không thể truy cập vào các phần tử của các vectơ đó. Câu hỏi của tôi là: làm thế nào tôi có thể truy cập các phần tử của các vectơ như vậy? Tôi cần smth. giống như một [0] để truy cập yếu tố X, a [1] để truy cập yếu tố Y vv
PS: Tôi biên dịch mã này sử dụng:
gcc -msse testgcc.c -o testgcc
Các câu hỏi không quá khó và tôi không tự coi mình là chuyên gia về gcc. Lần sau sử dụng một tiêu đề vô hại hơn, tôi gần như bỏ qua câu hỏi. – hirschhornsalz