It's OK to compare floating-points for equality
L'auteur remet en question l'idée reçue selon laquelle on ne doit jamais comparer des nombres flottants par égalité exacte, en soutenant que l'usage d'epsilons est souvent une mauvaise solution et que d'autres approches plus robustes existent. Il identifie trois problèmes majeurs des comparaisons par epsilon: ce sont des rustines temporaires, elles peuvent provoquer des bogues difficiles à déboguer en cascade et elles reposent sur des seuils arbitraires non transatifs qui brisent des invariants algorithmiques. À travers des cas concrets (mouvement sur grille, slerp, calcul de norme, résolution de systèmes linéaires, intersection rayon-boîte, enveloppe convexe), il montre des alternatives : séparation modèle/présentation, usages de propriétés IEEE754 (clamp, vérification d'égalité à 1 ou du sin(angle) nul), normalisation par la composante maximale, test exact du pivot nul, gestion des zéros/infini/NaN, ou recours à des méthodes numériques robustes (arrondi sur grille, précision arbitraire, arithmétique d'intervalle). Il admet cependant que les epsilons sont pertinents dans certaines situations pragmatiques comme le filtrage d'entrées utilisateur suivant l'échelle d'affichage ou l'écriture de tests unitaires, en recommandant d'utiliser des valeurs justifiées (par exemple FLT_EPSILON ou des seuils dérivés de la résolution) plutôt qu'un chiffre arbitraire. La conclusion est pratique et neutre : il faut réfléchir au problème concret, privilégier des solutions numériques correctes ou des réorganisations d'algorithmes, et n'employer des epsilons que lorsqu'ils sont documentés et adaptés au contexte.