を使用して、ベクターの要素にアクセスする方法通常、私は、次のタイプを使用して3Dベクトルと連携:C - GCC SSEベクトル拡張
なめらかを使用してベクトルを初期化typedef vec3_t float[3];
。
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};
とし、それらをsmthを使用してアクセスします。 like:
x_basis[X] * y_basis[X] + ...
私はSSE命令を使用してベクター演算を必要としています。私は次のコードを持っています:
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はこのようにサポートしています。しかし、... まず、私は結果として0.00000を与えます。第二に、私はそのようなベクトルの要素にアクセスすることはできません。 私の質問は:どのように私はそのようなベクトルの要素にアクセスできますか?私はスムーズが必要です。私が使用してこのコードをコンパイルします:
gcc -msse testgcc.c -o testgcc
質問はそれほど難しくありませんでした。自分自身をgccの専門家とはみなしません。次回より無害なタイトルを使用して、私はほとんど質問をスキップしました。 – hirschhornsalz