फ्लोटिंग पॉइंट मॉडुलस सटीकता क्यों मायने रखती है?


9

अधिकांश स्मालटाक बोलियाँ वर्तमान में एक अनुभवहीन फ्लोटिंग मापांक (fmod / शेष) को लागू करती हैं।
मैंने इसे स्क्वीक / फेरो और अंततः अन्य स्मॉलटाक पालन को मानकों (IEEE 754, ISO / IEC 10967) में सुधार के लिए बदल दिया, जैसा कि मैंने पहले से ही अन्य राज्य के लिए फ्लोटिंग पॉइंट ऑपरेशंस में किया था।

हालाँकि उन परिवर्तनों को अपनाने के लिए, मैं यह अनुमान लगाता हूं कि मानक का पालन करना मेरे साथियों को समझाने के लिए पर्याप्त नहीं होगा, इसलिए यह स्पष्ट करना कि वास्तव में किन परिस्थितियों में यह मामला मुझे बहुत मदद करेगा। मुझे अब तक अपने आप से अच्छा उदाहरण नहीं मिला।

क्या यहां कोई भी जानता है कि क्यों / कब / कहां (आईओडब्ल्यू (किस एल्गोरिथ्म में) मापांक की इतनी सटीकता मायने रखती है?


मुझे लगता है कि आपको कम्प्यूटेशनल साइंस पर बेहतर उत्तर मिल सकते हैं क्योंकि इस तरह के मुद्दे उनके (उप-) डोमेन में अधिक महत्वपूर्ण हैं। किसी भी मामले में, सवाल यहाँ पर है और आपको हमारे जवाब देने वाले को कुछ दिन पहले देना चाहिए।
राफेल

1
मैंने कोड को fmod / modf सटीकता पर भरोसा करते हुए देखा है जिसने मुझे कंपकंपी पैदा की, लेकिन संभावना है कि एक भाषा एक भोले अनुभवहीन फ्लोटिंग पॉइंट मापांक को लागू करने की हिम्मत कर सकती है और भी अधिक डरावना लगता है। उदाहरण कोड: (1) शेष लीजिए। (२) शून्य होने पर रुकें। (3) इसे 2 से गुणा करें और (1) पर जाएं। इस प्रक्रिया के दौरान कोई उपयोगी काम कर सकता है, लेकिन महत्वपूर्ण बिंदु यह है कि इस प्रक्रिया का समापन शेष की सटीकता और गुणन की सटीकता पर निर्भर करता है। 2. यह सुनिश्चित नहीं है कि मुझे यहां अधिक पूर्ण उत्तर देना चाहिए, क्योंकि कम्प्यूटेशनल विज्ञान अधिक उपयुक्त लगता है इस सवाल के लिए।
थॉमस क्लिम्पेल

एक अनुमान: त्रिकोणमितीय फ़ंक्शन के इनपुट को सामान्य करना।
पॉल ए। क्लेटन

@ThomasKlimpel यदि आप संदर्भ पाते हैं तो मुझे दिलचस्पी है। ध्यान दें कि भोली शेष को आईईईई दौर के साथ (एक्स - ((y / x) ट्रंकित * x)) के रूप में परिभाषित किया गया है, यहां तक ​​कि ऑप्स के पास भी, हम यह साबित कर सकते हैं कि सटीक (x, y) == 0 => naiveRem (x, y) == 0। समस्या इसके विपरीत है - झूठी सटीक विभाजन सकारात्मक - जैसे भोलेपन (4.0,0.1) == 0.0 जो दुर्भाग्य से कई मामलों में भोली उम्मीदों को फिट बैठता है!
उर्फ.नीस

@ पॉलए.केल्टन हां, डिग्री में साइन के लिए ... हो सकता है, हालांकि, मेरा अनुमान है कि भोले रेम लगभग समान रूप से काम करता है, लगभग सटीक रीमेक तक। 1e16 डिग्री क्योंकि 360 में केवल 6 बिट सेट की एक सीमा होती है, और क्योंकि 360 से विभाजन 360 के कई के पूर्ववर्ती के लिए कभी भी गोल नहीं होता है ... रेडियंस के लिए एक सभ्य पुस्तकालय को कई परिशुद्धता की आवश्यकता होती है, एक सटीक रेम डबल परिशुद्धता तक सीमित होता है वास्तव में ऐसे मामले में मदद?
उर्फ.नीस

जवाबों:


1

ध्यान दें कि निष्प्रभावी फ्लोटिंग पॉइंट कार्यान्वयन मौसम को प्रभावित करता है।

अलग-अलग हार्डवेयर पर एक ही इनपुट के साथ मौसम की भविष्यवाणियां चलाने के परीक्षण किए गए हैं और भविष्यवाणियां निकली हैं। यदि आप पुनरावृत्त एल्गोरिथ्म चला रहे हैं, तो यहां एक छोटा सा गोल अंतर होता है या बारिश में एक तितली प्रभाव बदलते धूप का परिणाम हो सकता है।

मानकों में राउंडिंग नियम (IEEE 754, ISO / IEC 10967) को ध्यान से सोचा गया है ताकि संख्यात्मक एल्गोरिदम सबसे सटीकता के साथ पूर्वानुमानित व्यवहार करें और हर बार उसी परिणाम को पुन: उत्पन्न करें। उन गोल नियमों के लिए डिज़ाइन किए गए मानक संख्यात्मक एल्गोरिदम का पालन न करने से और मौसम की भविष्यवाणी जैसे पुनरावृत्त एल्गोरिदम भी एक यादृच्छिक परिणाम दे सकते हैं।

(और मौसम की भविष्यवाणी के बारे में कुछ कहना नहीं है? :)


1
दूसरी ओर, अगर तितली का प्रभाव धूप को बारिश में बदल देता है, तो आपके परिणाम वैसे भी उपयोगी नहीं थे।
gnasher729

एक बार, मैंने पर्याप्त अंकों के साथ ASCII में फ्लोट डेटा को बचाया। एक ग्राहक मुझे एक समस्या दिखाना चाहता था, लेकिन ASCII फ़ाइल से डेटा को पुनर्स्थापित करने के बाद, समस्या गायब हो गई। मैंने कहा कि कुछ झटके से कोई फर्क नहीं पड़ना चाहिए, अगर उसकी समस्या ठीक नहीं है, तो मैं कुछ भी नहीं कर सकता। उन्होंने कहा कि यह उनका व्यवसाय था, मेरा सॉफ्टवेयर अपनी समस्याओं के पुनरुत्पादन को सक्षम करने वाला सॉफ्टवेयर उपलब्ध कराना था। वह सही था।
उर्फ.निसे

यही कारण है कि आपको% a का उपयोग करके हेक्साडेसिमल के रूप में बचत के लिए फ्लोटिंग पॉइंट नंबर आउटपुट करना चाहिए।
गोसविन वॉन ब्रेडरलो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.