सामान्य वितरण सीडीएफ की गणना करने के लिए एक फ़ंक्शन के किसी अन्य प्रोग्रामर के कार्यान्वयन की समीक्षा करते समय , मैंने पायथन के अंतर्निहित कार्यों के साथ या तो पूरे कार्यान्वयन को बदलने का सुझाव दिया या एक सामान्य वैज्ञानिक पुस्तकालय SciPy का उपयोग किया।
एक अन्य प्रोग्रामर ने बताया कि न तो उनके दस्तावेज़ीकरण में कोई सटीक गारंटी है math.erfc()
और न ही scipy.stats.norm.cdf()
। इसलिए, मुझे एक अनुमान एल्गोरिथ्म को बदलने के बारे में अधिक सतर्क होना चाहिए (जो कि एक सम्मानित स्रोत से लिया गया था , और जिसमें त्रुटि सीमा दस्तावेज थी )।
ईमानदार होने के लिए, अंतर्निहित या लाइब्रेरी फ़ंक्शन की सटीकता और सटीकता पर संदेह करने का विचार कभी भी मेरे दिमाग से पार नहीं हुआ था। सब के बाद, मैं जैसे कार्यों बुला रहा हूँ sin()
और sqrt()
बहुत सोचा के बिना साल के लिए - क्यों चाहिए math.erf()
या scipy.stats.norm.cdf()
किसी भी अलग किया जा?
लेकिन अब, मैं चिंतित हूं। मेरे प्रश्न हैं:
- सामान्य तौर पर, यदि दस्तावेज़ीकरण कोई विशेष उल्लेख नहीं करता है, तो क्या यह निहित है कि IEEE डबल-सटीक फ़्लोटिंग-पॉइंट द्वारा प्रस्तावित परिशुद्धता के भीतर इस प्रकार के फ़ंक्शन अंतिम दशमलव स्थान के लिए पूरी तरह से सटीक हैं?
- क्या यह विशेष रूप से अजगर
math.erf()
या साइन्सपाय के लिए सही हैscipy.stats.norm.cdf()
? आप कैसे बता सकते हैं? इस आदमी पेज के लिए
sin()
कहता है ...ये कार्य सटीकता खो सकते हैं जब उनका तर्क कई पीआई के पास हो या 0.0 से दूर हो।
जब साइन कार्य आवधिक और सममित होता है, तो ऐसे कैवेट का अस्तित्व क्यों होना चाहिए? ऐसा लगता है कि इष्टतम सटीकता प्राप्त करने के लिए इनपुट को रद्द करने के लिए कॉलर पर एक बोझ रखा गया है।
दूसरी ओर, मोज़िला के दस्तावेज़
Math.sin()
में सटीकता या सटीकता के बारे में कुछ नहीं कहा गया है। क्या इसका मतलब यह है कि यह पूरी तरह से सही है, या यह "सामान्य ज्ञान" है जोMath.sin()
केवल कुछ परिस्थितियों में जावास्क्रिप्ट में सटीक होगा, जैसे कि हर जगह?