La plupart des dialectes Smalltalk implémentent actuellement un module flottant inexact naïf (fmod / reste).
Je viens de changer cela pour améliorer Squeak / Pharo et éventuellement d'autres adhérences Smalltalk aux normes (IEEE 754, ISO / IEC 10967), comme je l'ai déjà fait pour d'autres opérations en virgule flottante de pointe.
Cependant, pour l'adoption de ces changements, je m'attends à ce que le respect de la norme ne soit pas suffisant pour convaincre mes pairs, donc expliquer dans quelles circonstances cette exactitude importerait vraiment m'aiderait beaucoup. Je n'ai pas pu trouver un bon exemple par moi-même jusqu'à présent.
Est-ce que quelqu'un ici sait pourquoi / quand / où (IOW dans quel algorithme) une telle exactitude du module importerait?
la source
Réponses:
Notez que la mise en œuvre inexacte en virgule flottante affecte la météo.
Il y a eu des tests exécutant des prévisions météorologiques avec les mêmes entrées sur un matériel différent et les prévisions ont divergé. Si vous utilisez un algorithme itératif, une petite différence d'arrondi ici ou là peut entraîner un effet papillon qui transforme le soleil en pluie.
Les règles d'arrondi dans les normes (IEEE 754, ISO / IEC 10967) ont été soigneusement pensées afin que les algorithmes numériques se comportent de manière prévisible avec la plus grande précision et reproduisent le même résultat à chaque fois. En ne suivant pas les algorithmes numériques standard conçus pour ces règles d'arrondi, les règles d'arrondi se briseront et les algorithmes itératifs comme les prévisions météorologiques peuvent même donner un résultat aléatoire.
(et cela ne dit-il pas quelque chose sur les prévisions météorologiques? :)
la source