Durante la scrittura di alcuni casi di test e alcuni test verificano il risultato di un NaN.Negativo NaN non è un NaN?
Ho provato ad utilizzare std::isnan
ma i failes asserzione:
Assertion `std::isnan(x)' failed.
Dopo aver stampato il valore di x
, si è scoperto che è negativo NaN (-nan
) che è del tutto accettabile nel mio caso.
Dopo aver tentato di utilizzare il fatto che NaN != NaN
e utilizzando assert(x == x)
, il compilatore mi fa un "favore" e ottimizza l'assert.
Anche la funzione isNaN
viene ottimizzata.
Come è possibile verificare l'uguaglianza di NaN e -NaN?
o_O? NaN negativo * è * NaN. – kennytm
Puoi mostrare come scrivi il tuo 'isNaN', e forse quello incorporato dal tuo compilatore se ce l'hai? Un modo per testare ** a ** NaN (ce ne sono diversi, come hai notato) è testare il pattern di bit su http://en.wikipedia.org/wiki/NaN (l'esponente è 11..11). –
Quale compilatore stai usando e come si presenta il tuo codice di prova? – jalf