Jednak obliczenia SSE2 są trochę mniej precyzyjne niż na FPU (nawet ograniczając się do samych double'i) bo FPU liczy w 80 bitach i ewentualnie zaokrągla do 64, a SSE2 liczy na 64 bitach.
Tylko że takie obliczanie jest do kitu, bo możesz otrzymać różne wyniki zależnie od zapisu obliczeń jak i od kompilatora.
Przykładowo gdy obliczamy:
a + bc, wówczas procesor obliczy bc = u, i trzyma to na stosie, więc w long double, potem + a.
Ale może być nieco inna sytuacja:
double u = b*c;
// tu liczymy coś ze zmienną u
return u + a;
i wynik może być już inny, ponieważ u jest już faktycznie tylko double, zamiast long;
zakładając że kompilator użyje tej zmiennej, bo może to stale trzymać w rejestrze FPU (zoptymalizować).