J'essaie de faire des calculs avec des nombres complexes à virgule flottante, en utilisant les unités vectorielles __m128
. Avec __m128
je peux stocker deux complex float
, car chaque nombre complexe se compose de deux nombres à virgule flottante, une partie réelle et une partie imaginaire.Charger et stocker des flottants complexes avec Intel intrinsics dans C
Jusqu'ici, tout va bien.
Mon problème se pose quand je dois «recueillir» mes réponses en uncomplex float
. Dites que j'ai deux vecteurs __m128
, et quatre nombres complexes stockés dans ces deux vecteurs. Par exemple, je peux ajouter deux vecteurs (deux et deux flottants) ensemble en utilisant le _mm_add_ps
intrinsèque, mais comment puis-je "réduire" les deux nombres complexes dans le vecteur de résultat à un nombre complexe (deux float
s) et le stocker dans un tableau? De même, si je veux saisir un nombre complexe de mon tableau et le stocker deux fois dans un vecteur (la partie réelle dans le 1er et 3ème bloc, et la partie imaginaire dans le 2ème et le 4ème bloc), comment pouvez-vous J'accomplis cela?