La mayoría de los dialectos de Smalltalk implementan actualmente un módulo flotante inexacto ingenuo (fmod / resto).
Acabo de cambiar esto para mejorar Squeak / Pharo y, finalmente, otra adhesión de Smalltalk a los estándares (IEEE 754, ISO / IEC 10967), como ya lo hice para otras operaciones de coma flotante de última generación.
Sin embargo, para la adopción de esos cambios, anticipo que cumplir con el estándar no será suficiente para convencer a mis compañeros, por lo que explicar en qué circunstancias realmente importaría esta exactitud me ayudaría mucho. No pude encontrar un buen ejemplo por mí mismo hasta ahora.
¿Alguien aquí sabe por qué / cuándo / dónde (IOW en qué algoritmo) importaría tal exactitud de módulo?
arithmetic
floating-point
aka.nice
fuente
fuente
Respuestas:
Tenga en cuenta que la implementación inexacta de coma flotante afecta el clima.
Se han realizado pruebas ejecutando predicciones meteorológicas con las mismas entradas en hardware diferente y las predicciones divergieron. Si está ejecutando un algoritmo iterativo, entonces una pequeña diferencia de redondeo aquí o allá puede resultar en un efecto mariposa que cambia la luz del sol a lluvia.
Las reglas de redondeo en los estándares (IEEE 754, ISO / IEC 10967) se han pensado cuidadosamente para que los algoritmos numéricos se comporten de manera predecible con la mayor precisión y reproduzcan el mismo resultado cada vez. Al no seguir los algoritmos numéricos estándar diseñados para esas reglas de redondeo se romperán y los algoritmos iterativos como las predicciones meteorológicas pueden incluso dar un resultado aleatorio.
(¿y eso no dice algo sobre las predicciones meteorológicas? :)
fuente