Atualmente, a maioria dos dialetos do Smalltalk implementa um módulo flutuante inexato e ingênuo (fmod / restante).
Eu apenas mudei isso para melhorar o Squeak / Pharo e, eventualmente, outra aderência do Smalltalk aos padrões (IEEE 754, ISO / IEC 10967), como já fiz em outras operações de ponto flutuante de última geração.
No entanto, para a adoção dessas mudanças, prevejo que a adesão ao padrão não será suficiente para convencer meus colegas, portanto, explicar em quais circunstâncias essa exatidão realmente importaria me ajudaria muito. Não consegui encontrar um bom exemplo sozinho até agora.
Alguém aqui sabe por que / quando / onde (IOW em que algoritmo) tal exatidão de módulo importaria?
arithmetic
floating-point
aka.nice
fonte
fonte
Respostas:
Observe que a implementação inexata de ponto flutuante afeta o clima.
Houve testes executando previsões do tempo com as mesmas entradas em diferentes hardwares e as previsões divergiram. Se você estiver executando o algoritmo iterativo, uma pequena diferença de arredondamento aqui ou ali poderá resultar em um efeito de borboleta transformando o sol em chuva.
As regras de arredondamento nas normas (IEEE 754, ISO / IEC 10967) foram cuidadosamente pensadas para que algoritmos numéricos se comportem previsíveis com a maior precisão e reproduzam o mesmo resultado todas as vezes. Ao não seguir os algoritmos numéricos padrão projetados para essas regras de arredondamento, os algoritmos iterativos, como as previsões meteorológicas, podem até dar um resultado aleatório.
(e isso não diz algo sobre previsões meteorológicas? :)
fonte