Ho letto recentemente questo circa NaN
valori nelle operazioni aritmetiche SSE:Come assicurarsi che i NaN si propagino quando si utilizzano gli intrinseci SSE?
Il risultato di operazioni aritmetiche che agiscono su due non un numero (NAN) argomenti è indefinito. Pertanto, le operazioni in virgola mobile che utilizzano gli argomenti NAN non corrisponderanno al comportamento previsto delle istruzioni di assemblaggio corrispondenti.
Fonte: http://msdn.microsoft.com/en-us/library/x5c07e2a(v=vs.100).aspx
Questo significa che, per esempio, l'aggiunta di due __m128
valori potrebbero convertire un NaN
ad un vero e proprio?
Se un calcolo si basa su un valore NaN
, è necessario che il risultato finale sia NaN
. C'è un modo per fare questo?
Penso che sia eccessivamente pedante. Le istruzioni SSE a virgola mobile dovrebbero seguire il comportamento in virgola mobile IEEE piuttosto rigorosamente a meno che non si faccia roba come denormali o qualcosa del genere. – Mysticial
@Mysticial: Non sta dicendo che le istruzioni SSE non forniranno i risultati previsti. Sta dicendo che il compilatore potrebbe non usare le istruzioni SSE per implementare intrinseche di tipo SSE. –
@EricPostpischil Vedo quello che stai dicendo. Ma finora non ho ancora visto accadere qualcosa del genere. Quindi non ne sono completamente convinto. – Mysticial