Niedawno przeczytałem ten temat NaN
wartości w SSE operacji arytmetycznych:Jak upewnić się, że NaNs rozprzestrzeniają się podczas używania samoistnego SSE?
wynik operacji arytmetycznych działających na dwa nie liczbą (NaN) argumentów jest niezdefiniowany. Dlatego operacje zmiennoprzecinkowe używające argumentów NAN nie będą zgodne z oczekiwanym zachowaniem odpowiednich instrukcji montażu.
Źródło: http://msdn.microsoft.com/en-us/library/x5c07e2a(v=vs.100).aspx
Czy to znaczy, że, powiedzmy, dodanie dwóch __m128
wartości może konwertować NaN
do rzeczywistego?
Jeśli obliczenia opierają się na wartości NaN
, potrzebuję również końcowego wyniku, który będzie również NaN
. Czy jest jakiś sposób to zrobić?
Myślę, że to zbyt pedantyczne. Instrukcje SSE zmiennoprzecinkowe powinny być zgodne z IEEE zmiennoprzecinkowe zachowanie raczej ściśle, chyba że robisz rzeczy takie jak spłukiwanie lub coś w tym rodzaju. – Mysticial
@Mysticial: Nie oznacza to, że instrukcje SSE nie zapewnią oczekiwanych rezultatów. Mówi się, że kompilator może nie używać instrukcji SSE do implementacji wewnętrznej encykliki typu SSE. –
@EricPostpischil Widzę, co mówisz. Ale do tej pory nie widziałem jeszcze czegoś takiego. Więc nie jestem do końca przekonany o tym. – Mysticial