Por lo general, yo trabajo con vectores 3D utilizando siguientes tipos:C - Cómo acceder a los elementos del vector utilizando GCC SSE extensión vector
typedef vec3_t float[3];
inicializar vectores usando algo bajo. como:
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};
y acceder a ellos usando smth. como:
x_basis[X] * y_basis[X] + ...
Ahora necesito una aritmética vectorial usando instrucciones SSE. Tengo el siguiente código:
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 es compatible. Pero ... Primero, me da 0.00000 como resultado. En segundo lugar, no puedo acceder a los elementos de dichos vectores. Mi pregunta es: ¿cómo puedo acceder a los elementos de dichos vectores? Necesito algo. como un [0] para acceder elemento X, un [1] para acceder elemento Y, etc.
PD: compilar este código usando:
gcc -msse testgcc.c -o testgcc
Las preguntas no fueron tan difíciles, y no me considero un experto en gcc. La próxima vez uso un título más inofensivo, casi salte la pregunta. – hirschhornsalz