Kebanyakan dialek Smalltalk saat ini menerapkan modulus apung yang tidak eksak (fmod / sisanya).
Saya baru saja mengubah ini untuk meningkatkan Squeak / Pharo dan akhirnya kepatuhan Smalltalk lainnya terhadap standar (IEEE 754, ISO / IEC 10967), seperti yang telah saya lakukan untuk operasi floating point canggih lainnya.
Namun untuk penerapan perubahan-perubahan itu, saya mengantisipasi bahwa mematuhi standar tidak akan cukup untuk meyakinkan rekan-rekan saya, jadi menjelaskan dalam keadaan mana ketepatan ini akan sangat berarti akan banyak membantu saya. Sejauh ini saya tidak dapat menemukan contoh yang baik.
Apakah ada orang di sini yang tahu mengapa / kapan / di mana (IOW dalam algoritma mana) ketepatan modulus seperti itu penting?
arithmetic
floating-point
alias bagus
sumber
sumber
Jawaban:
Perhatikan bahwa implementasi floating point yang tidak tepat mempengaruhi cuaca.
Ada beberapa tes yang menjalankan prediksi cuaca dengan input yang sama pada perangkat keras yang berbeda dan prediksi tersebut berbeda. Jika Anda menjalankan algoritma iteratif maka perbedaan pembulatan kecil di sini atau di sana dapat menghasilkan efek kupu-kupu mengubah sinar matahari menjadi hujan.
Aturan pembulatan dalam standar (IEEE 754, ISO / IEC 10967) telah dipikirkan dengan cermat sehingga algoritma numerik berperilaku dapat diprediksi dengan paling akurat dan mereproduksi hasil yang sama setiap saat. Dengan tidak mengikuti algoritma numerik standar yang dirancang untuk aturan pembulatan itu akan rusak dan algoritma iteratif seperti prediksi cuaca bahkan dapat memberikan hasil acak.
(dan bukankah itu mengatakan sesuatu tentang prediksi cuaca? :)
sumber