La différence en te quiet et signaling, c'est que la version signaling est sensée lever un signal, afin d'être détecté au plus vite.
Un NaN ne peut pas être le résultat d'une division par 0, sauf 0/0 (ce serait +/-Inf).
Pour savoir si un nombre est un NaN, on ne peut par le comparer avec NaN !
Pour tout x (même NaN), x != NaN. Pour savoir si un nombre est un NaN, on peut faire :
bool isNaN(float f) {return f != f;}
Tous les types n'ont pas de NaN (d'où l'intérêt de has_quiet_NaN et has_signaling_NaN dans numeric_limits), mais c'est demandé par la norme IEEE sur les flottants.
Partager