У меня очень простая программа для умножения четырех чисел.Он работает нормально, когда каждый из них составляет 10000, но не делает, если я изменяю их на 10001. Результат отключается на единицу.
Я скомпилировал программу с gcc -msse2 main_sse.c -o sse
на AMD Opteron и Intel Xeon и получил одинаковый результат на обеих машинах.
Буду признателен за любую помощь.Не удалось найти в Интернете ничего по этой теме.
#include <stdlib.h>
#include <stdio.h>
#include <xmmintrin.h>
int main(){
float x[4], y[4], temp[4]; int i; __m128 X, Y, result;
for(i=0; i < 4; i++) { x[i] = 10000; y[i] = 10000; }
X = _mm_load_ps(&x[0]); Y = _mm_load_ps(&y[0]);
result = _mm_mul_ps(X,Y); _mm_store_ps(&temp[0], result);
for(i=0; i < 4; i++) { x[i] = 10001; y[i] = 10001; }
X = _mm_load_ps(&x[0]); Y = _mm_load_ps(&y[0]);
result = _mm_mul_ps(X,Y); _mm_store_ps(&temp[0], result);
}