So che IEEE 754 definisce NaNs di avere la seguente rappresentazione bit a bit:Quali usi hanno i payload in virgola mobile NaN?
- Il bit di segno può essere sia
0
o1
- Il campo esponente contiene tutti
1
bit - Alcuni bit della mantissa sono usato per specificare se si tratta di un NaN silenzioso o di segnalazione NaN
- La mantissa non può essere tutti
0
bit perché quel modello di bit è riservato per rappresentare l'infinito - I restanti bit della mantissa formare un payload
Il payload si propaga (come è il NaN nel suo complesso) al risultato di un calcolo in virgola mobile quando l'ingresso del calcolo è NaN, se non ho conoscenza dei dettagli di questa propagazione o se lo standard specifica come farlo. Chi imposta il carico utile originale? Cosa succede se aggiungo due NaN con payload diversi?
Ma la cosa più importante: non ho mai visto i payload NaN usati prima. Quali usi ha questo campo di carico utile?
Ho sentito parlare del payload utilizzato per rispondere perché un NaN è stato generato in primo luogo. ('0/0',' oo-oo', funzione valutata in pole, ecc.) Ho anche sentito voci non confermate che almeno un programma utilizza il payload sNaN (51 bit) come puntatore (48 bit) per un "ripiego" di sorta all'aritmetica di precisione arbitraria. – tmyklebu
la specifica definisce anche quando viene creata una nan, segnalando nans vs quiet nans. L'idea è quindi non devi controllare dopo ogni operazione se c'è stato un overflow o underflow o dividi per zero o qualsiasi cosa tu possa guardare il risultato finale e vedere che il calcolo ha avuto un problema ad un certo punto. –
sì, appena controllato, elenca diverse situazioni in cui il risultato corretto è un NaN. (non necessariamente quelli che ho elencato nel commento sopra) –