Die meisten Smalltalk-Dialekte implementieren derzeit einen naiven ungenauen schwebenden Modul (fmod / rest).
Ich habe dies nur geändert, um die Einhaltung von Squeak / Pharo und eventuell anderen Smalltalk-Standards (IEEE 754, ISO / IEC 10967) zu verbessern, wie ich es bereits für andere Gleitkommaoperationen nach dem Stand der Technik getan habe.
Für die Übernahme dieser Änderungen gehe ich jedoch davon aus, dass die Einhaltung von Standards nicht ausreicht, um meine Kollegen zu überzeugen. Daher würde es mir sehr helfen, zu erklären, unter welchen Umständen diese Genauigkeit wirklich wichtig wäre. Ich konnte bisher selbst kein gutes Beispiel finden.
Weiß hier jemand, warum / wann / wo (IOW in welchem Algorithmus) eine solche Genauigkeit des Moduls von Bedeutung ist?
quelle
Antworten:
Beachten Sie, dass eine ungenaue Gleitkommaimplementierung das Wetter beeinflusst.
Es wurden Tests durchgeführt, bei denen Wettervorhersagen mit denselben Eingaben auf unterschiedlicher Hardware ausgeführt wurden, und die Vorhersagen gingen auseinander. Wenn Sie einen iterativen Algorithmus ausführen, kann ein kleiner Rundungsunterschied hier oder da dazu führen, dass ein Schmetterlingseffekt Sonnenschein in Regen verwandelt.
Die Rundungsregeln in Normen (IEEE 754, ISO / IEC 10967) wurden sorgfältig durchdacht, damit sich numerische Algorithmen mit höchster Genauigkeit vorhersehbar verhalten und jedes Mal das gleiche Ergebnis reproduzieren. Wenn Sie die für diese Rundungsregeln entwickelten numerischen Standardalgorithmen nicht befolgen, werden sie gebrochen, und iterative Algorithmen wie Wettervorhersagen können sogar zu einem zufälligen Ergebnis führen.
(Und sagt das nicht etwas über Wettervorhersagen aus? :)
quelle