आईईईई 754-1985: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{short description|First edition of the IEEE 754 floating-point standard}}
{{short description|First edition of the IEEE 754 floating-point standard}}
{{See also|आईईईई 754}}
{{See also|आईईईई 754}}
'''आईईईई 754-1985'''<ref>{{Cite book|title=बाइनरी फ़्लोटिंग-पॉइंट अंकगणित के लिए आईईईई मानक|year=1985|doi=10.1109/IEEESTD.1985.82928|isbn=0-7381-1165-1}}</ref> [[कंप्यूटर]] में [[ तैरनेवाला स्थल |फ्लोटिंग-पॉइंट]] नंबर्स को रिप्रेजेंट करने के लिए इंडस्ट्री [[तकनीकी मानक|स्टैण्डर्ड]] था, जिसे सामान्यतः 1985 में स्वीकार किया गया था और 2008 में [[IEEE 754-2008|आईईईई 754-2008]] द्वारा प्रतिस्थापित किया गया था, और फिर 2019 में माइनर वर्ज़न [[IEEE 754-2019|आईईईई 754-2019]] द्वारा प्रतिस्थापित किया गया था।<ref>{{Cite web|url=http://754r.ucbtest.org/background/|title=ANSI/IEEE Std 754-2019|website=754r.ucbtest.org|access-date=2019-08-06}}</ref> अपने 23 वर्षों के समय में, यह फ़्लोटिंग-पॉइंट कैलकुलेशन के लिए सबसे वाइड रूप से उपयोग किया जाने वाला प्रारूप था। इसे सॉफ़्टवेयर में, फ़्लोटिंग-पॉइंट [[ पुस्तकालय (कंप्यूटिंग) |लाइब्रेरीज़]] के रूप में, और हार्डवेयर में, कई [[ CPU |सीपीयू]] और [[फ़्लोटिंग-पॉइंट इकाई|एफपीयू]] के [[निर्देश (कंप्यूटर विज्ञान)|इंस्ट्रक्शन]] में इम्प्लीमेंट किया गया था। आईईईई 754-1985 बनने वाले ड्राफ्ट को इम्प्लीमेंट करने वाला प्रथम इंटीग्रेटेड सर्किट [[इंटेल 8087]] था।
'''आईईईई 754-1985'''<ref>{{Cite book|title=बाइनरी फ़्लोटिंग-पॉइंट अंकगणित के लिए आईईईई मानक|year=1985|doi=10.1109/IEEESTD.1985.82928|isbn=0-7381-1165-1}}</ref> [[कंप्यूटर]] में [[ तैरनेवाला स्थल |फ्लोटिंग-पॉइंट]] नंबर्स का रिप्रजेंटेशन करने के लिए इंडस्ट्री [[तकनीकी मानक|स्टैण्डर्ड]] था, जिसे सामान्यतः 1985 में स्वीकार किया गया था और 2008 में [[IEEE 754-2008|आईईईई 754-2008]] द्वारा प्रतिस्थापित किया गया था, और फिर 2019 में माइनर वर्ज़न [[IEEE 754-2019|आईईईई 754-2019]] द्वारा प्रतिस्थापित किया गया था।<ref>{{Cite web|url=http://754r.ucbtest.org/background/|title=ANSI/IEEE Std 754-2019|website=754r.ucbtest.org|access-date=2019-08-06}}</ref> अपने 23 वर्षों के समय में, यह फ़्लोटिंग-पॉइंट कैलकुलेशन के लिए सबसे वाइड रूप से उपयोग किया जाने वाला फॉर्मेट था। इसे सॉफ़्टवेयर में, फ़्लोटिंग-पॉइंट [[ पुस्तकालय (कंप्यूटिंग) |लाइब्रेरीज़]] के रूप में, और हार्डवेयर में, कई [[ CPU |सीपीयू]] और [[फ़्लोटिंग-पॉइंट इकाई|एफपीयू]] के [[निर्देश (कंप्यूटर विज्ञान)|इंस्ट्रक्शन]] में इम्प्लीमेंट किया गया था। आईईईई 754-1985 बनने वाले ड्राफ्ट को इम्प्लीमेंट करने वाला प्रथम इंटीग्रेटेड सर्किट [[इंटेल 8087]] था।


आईईईई 754-1985 बाइनरी में नंबर्स को रिप्रेजेंट करता है, जो एक्यूरेसी के चार लेवल्स की परिभाषा प्रदान करता है, जिनमें से दो सबसे अधिक उपयोग किए जाते हैं:
आईईईई 754-1985 बाइनरी में नंबर्स को रिप्रजेंटेशन करता है, जो एक्यूरेसी के चार लेवल्स की परिभाषा प्रदान करता है, जिनमें से दो सबसे अधिक उपयोग किए जाते हैं:


{| class="wikitable"
{| class="wikitable"
Line 22: Line 22:
|लगभग 16 दशमलव अंक
|लगभग 16 दशमलव अंक
|}
|}
स्टैण्डर्ड पॉजिटिव और नेगेटिव इनफाइनाइट के लिए रिप्रेजेंट को भी परिभाषित करता है, [[नकारात्मक शून्य|नेगेटिव शून्य]], [[शून्य से विभाजन]] जैसे अमान्य परिणामों को सुरक्षित करने के लिए पांच एक्सेप्शन, उन एक्सेप्शन्स का रिप्रेजेंट करने के लिए विशेष मान जिन्हें [[NaN]] कहा जाता है, ऊपर दिखाए गए छोटी नंबर्स का रिप्रेजेंट करने के लिए [[असामान्य संख्या|डिनॉर्मल नंबर्स]], और चार गोल मोड है।
स्टैण्डर्ड पॉजिटिव और नेगेटिव इनफाइनाइट के लिए रिप्रजेंटेशन को भी परिभाषित करता है, [[नकारात्मक शून्य|नेगेटिव शून्य]], [[शून्य से विभाजन]] जैसे अमान्य परिणामों को सुरक्षित करने के लिए पांच एक्सेप्शन, उन एक्सेप्शन्स का रिप्रजेंटेशन करने के लिए विशेष मान जिन्हें [[NaN]] कहा जाता है, ऊपर दिखाए गए छोटी नंबर्स का रिप्रजेंटेशन करने के लिए [[असामान्य संख्या|डिनॉर्मल नंबर्स]], और चार गोल मोड है।


==नंबर्स का रिप्रेजेंट==
==नंबर्स का रिप्रजेंटेशन==


[[Image:IEEE 754 Single Floating Point Format.svg|right|frame|संख्या 0.15625 को सिंगल-त्रुटिहीन आईईईई 754-1985 फ़्लोटिंग-पॉइंट संख्या के रूप में दर्शाया गया है। स्पष्टीकरण के लिए टेक्स्ट देखें। ]]
[[Image:IEEE 754 Single Floating Point Format.svg|right|frame|नंबर 0.15625 को सिंगल-त्रुटिहीन आईईईई 754-1985 फ़्लोटिंग-पॉइंट नंबर के रूप में दर्शाया गया है। स्पष्टीकरण के लिए टेक्स्ट देखें। ]]
[[Image:IEEE 754 Double Floating Point Format.svg|right|frame|64 बिट आईईईई 754 में तीन क्षेत्र फ़्लोट होते हैं।]]आईईईई 754 प्रारूप में फ़्लोटिंग-पॉइंट नंबरों में तीन क्षेत्र होते हैं: [[साइन बिट]], बायस्ड घातांक और अंश। निम्नलिखित उदाहरण प्रत्येक का अर्थ बताता है।
[[Image:IEEE 754 Double Floating Point Format.svg|right|frame|64 बिट आईईईई 754 में तीन क्षेत्र फ़्लोट होते हैं।]]आईईईई 754 फॉर्मेट में फ़्लोटिंग-पॉइंट नंबर्स में तीन फील्ड्स होते हैं: [[साइन बिट]], बायस्ड एक्सपोनेंट और फ्रैक्शन आदि। निम्नलिखित उदाहरण प्रत्येक का अर्थ बताता है।


दशमलव संख्या 0.15625<sub>10</sub> बाइनरी में 0.00101<sub>2</sub> (अर्थात् 1/8 + 1/32) प्रदर्शित किया गया है। (अंकाक्षर संख्या [[मूलांक]] प्रदर्शित करते हैं।) [[वैज्ञानिक संकेतन]] के अनुरूप, जहां नंबर्स को दशमलव बिंदु के बाईं ओर अन्य-शून्य अंक के रूप में लिखा जाता है, हम इस संख्या को पुनः लिखते हैं जिससे कि इसमें बाइनरी बिंदु के बाईं ओर सिंगल 1 बिट होता है। हम तीन स्थितियों द्वारा त्यागे गए बिट्स के स्थानांतरण की पूर्ति के लिए 2 की उचित शक्ति से गुणा करते हैं:
दशमलव नंबर 0.15625<sub>10</sub> बाइनरी में 0.00101<sub>2</sub> (अर्थात् 1/8 + 1/32) प्रदर्शित किया गया है। (अंकाक्षर नंबर [[मूलांक]] प्रदर्शित करते हैं।) [[वैज्ञानिक संकेतन]] के अनुरूप, जहां नंबर्स को दशमलव बिंदु के बाईं ओर अन्य-शून्य अंक के रूप में लिखा जाता है, हम इस नंबर को पुनः लिखते हैं जिससे कि इसमें बाइनरी बिंदु के बाईं ओर सिंगल 1 बिट होता है। हम तीन स्थितियों द्वारा त्यागे गए बिट्स के स्थानांतरण की पूर्ति के लिए 2 की उचित शक्ति से गुणा करते हैं:


: <math>0.00101_2 = 1.01_2 \times 2^{-3}</math>
: <math>0.00101_2 = 1.01_2 \times 2^{-3}</math>
अब हम भिन्न और घातांक को पढ़ सकते हैं: भिन्न .01<sub>2</sub> है और घातांक −3 है।
अब हम भिन्न और घातांक को पढ़ सकते हैं: भिन्न .01<sub>2</sub> है और घातांक −3 है।


जैसा कि चित्रों में प्रदर्शित किया गया है, आईईईई 754 में इस संख्या का रिप्रेजेंट करने वाले तीन क्षेत्र हैं:
जैसा कि चित्रों में प्रदर्शित किया गया है, आईईईई 754 में इस नंबर का रिप्रजेंटेशन करने वाले तीन क्षेत्र हैं:


: चिन्ह = 0, क्योंकि संख्या पॉजिटिव है (1 नेगेटिव प्रदर्शित करता है।)।
: चिन्ह = 0, क्योंकि नंबर पॉजिटिव है (1 नेगेटिव प्रदर्शित करता है।)।
: बायस्ड घातांक = −3 + बायस है। 'सिंगल एक्यूरेसी' में, बायस '127' है, इसलिए इस उदाहरण में बायस्ड घातांक 124 है; 'डबल प्रिसिजन' में, बायस '1023' है, इसलिए इस उदाहरण में बायस्ड घातांक 1020 है।
: बायस्ड घातांक = −3 + बायस है। 'सिंगल एक्यूरेसी' में, बायस '127' है, इसलिए इस उदाहरण में बायस्ड घातांक 124 है; 'डबल प्रिसिजन' में, बायस '1023' है, इसलिए इस उदाहरण में बायस्ड घातांक 1020 है।
: अपूर्णांक = .01000…<sub>2</sub>.
: अपूर्णांक = .01000…<sub>2</sub>.


आईईईई 754 घातांक में [[ऑफसेट बाइनरी]] जोड़ता है जिससे कि कई स्थितियों में नंबर्स की अपेक्षा उसी हार्डवेयर द्वारा सरलता से की जा सके जो हस्ताक्षरित 2-पूरक पूर्णांकों की अपेक्षा करता है। बायस्ड घातांक का उपयोग करते हुए, दो पॉजिटिव फ़्लोटिंग-पॉइंट नंबर्स में से छोटी संख्या चिह्न और परिमाण पूर्णांक के समान क्रम के पश्चात बड़ी संख्या से कम निकलती है। यदि दो फ़्लोटिंग-पॉइंट नंबर्स के भिन्न-भिन्न चिह्न हैं, तो चिह्न-और-परिमाण अपेक्षा बायस्ड घातांक के साथ भी कार्य करती है। चूँकि, यदि दोनों बायस्ड-घातांक फ़्लोटिंग-पॉइंट नंबर्स नेगेटिव हैं, तो क्रम को विपरीत कर दिया जाना चाहिए। यदि घातांक को, मान लीजिए, 2-पूरक संख्या के रूप में प्रदर्शित किया जाता है, तो यह देखने के लिए अपेक्षा करना कि दो नंबर्स में से कौन सी बड़ी है, सुविधाजनक नहीं होता है।
आईईईई 754 घातांक में [[ऑफसेट बाइनरी]] जोड़ता है जिससे कि कई स्थितियों में नंबर्स की अपेक्षा उसी हार्डवेयर द्वारा सरलता से की जा सके जो हस्ताक्षरित 2-पूरक पूर्णांकों की अपेक्षा करता है। बायस्ड घातांक का उपयोग करते हुए, दो पॉजिटिव फ़्लोटिंग-पॉइंट नंबर्स में से छोटी नंबर चिह्न और परिमाण पूर्णांक के समान क्रम के पश्चात बड़ी नंबर से कम निकलती है। यदि दो फ़्लोटिंग-पॉइंट नंबर्स के भिन्न-भिन्न चिह्न हैं, तो चिह्न-और-परिमाण अपेक्षा बायस्ड घातांक के साथ भी कार्य करती है। चूँकि, यदि दोनों बायस्ड-घातांक फ़्लोटिंग-पॉइंट नंबर्स नेगेटिव हैं, तो क्रम को विपरीत कर दिया जाना चाहिए। यदि घातांक को, मान लीजिए, 2-पूरक नंबर के रूप में प्रदर्शित किया जाता है, तो यह देखने के लिए अपेक्षा करना कि दो नंबर्स में से कौन सी बड़ी है, सुविधाजनक नहीं होता है।


अग्रणी 1 बिट को विस्थापित कर दिया गया है क्योंकि शून्य को त्यागकर सभी नंबर्स अग्रणी 1 से प्रारंभ होती हैं; अग्रणी 1 अंतर्निहित है और वास्तव में इसे संग्रहीत करने की आवश्यकता नहीं है जो मुफ़्त में अतिरिक्त एक्यूरेसी प्रदान करता है।
अग्रणी 1 बिट को विस्थापित कर दिया गया है क्योंकि शून्य को त्यागकर सभी नंबर्स अग्रणी 1 से प्रारंभ होती हैं; अग्रणी 1 अंतर्निहित है और वास्तव में इसे संग्रहीत करने की आवश्यकता नहीं है जो मुफ़्त में अतिरिक्त एक्यूरेसी प्रदान करता है।
Line 46: Line 46:
=== शून्य ===
=== शून्य ===


शून्य संख्या को विशेष रूप से प्रदर्शित किया गया है:
शून्य नंबर को विशेष रूप से प्रदर्शित किया गया है:


: पॉजिटिव शून्य के लिए चिह्न = 0, नेगेटिव शून्य के लिए 1 है।
: पॉजिटिव शून्य के लिए चिह्न = 0, नेगेटिव शून्य के लिए 1 है।
Line 54: Line 54:
=== असामान्यीकृत नंबर्स ===
=== असामान्यीकृत नंबर्स ===


ऊपर वर्णित संख्या निरूपण को सामान्यीकृत कहा जाता है, जिसका अर्थ है कि अंतर्निहित अग्रणी बाइनरी अंक 1 है। अंडरफ्लो होने पर एक्यूरेसी की हानि को कम करने के लिए, आईईईई 754 में सामान्यीकृत रिप्रेजेंट में संभव से छोटे अंशों का रिप्रेजेंट करने की क्षमता सम्मिलित है। अंतर्निहित अग्रणी अंक 0 बनाता है। ऐसी नंबर्स को असामान्य नंबर्स कहा जाता है। उनमें सामान्यीकृत संख्या के रूप में कई [[महत्वपूर्ण अंक]] सम्मिलित नहीं होते हैं, किन्तु जब किसी ऑपरेशन का परिणाम शून्य नहीं होता है, किन्तु सामान्यीकृत संख्या द्वारा प्रदर्शित किये जाने के लिए शून्य के अधिक निकट होता है, तो वे एक्यूरेसी की क्रमिक हानि को सक्षम करते हैं।
ऊपर वर्णित नंबर निरूपण को सामान्यीकृत कहा जाता है, जिसका अर्थ है कि अंतर्निहित अग्रणी बाइनरी अंक 1 है। अंडरफ्लो होने पर एक्यूरेसी की हानि को कम करने के लिए, आईईईई 754 में सामान्यीकृत रिप्रजेंटेशन में संभव से छोटे अंशों का रिप्रजेंटेशन करने की क्षमता सम्मिलित है। अंतर्निहित अग्रणी अंक 0 बनाता है। ऐसी नंबर्स को असामान्य नंबर्स कहा जाता है। उनमें सामान्यीकृत नंबर के रूप में कई [[महत्वपूर्ण अंक]] सम्मिलित नहीं होते हैं, किन्तु जब किसी ऑपरेशन का परिणाम शून्य नहीं होता है, किन्तु सामान्यीकृत नंबर द्वारा प्रदर्शित किये जाने के लिए शून्य के अधिक निकट होता है, तो वे एक्यूरेसी की क्रमिक हानि को सक्षम करते हैं।


असामान्य संख्या को सभी 0 बिट्स के बायस्ड घातांक के साथ प्रदर्शित किया जाता है, जो सिंगल एक्यूरेसी में −126 के घातांक का रिप्रेजेंट करता है (−127 नहीं), या दोहरी एक्यूरेसी में −1022 (−1023 नहीं) का रिप्रेजेंट करता है।<ref>{{cite book|last=Hennessy|title=कंप्यूटर संगठन और डिज़ाइन|year=2009|url=https://archive.org/details/computerorganiza00patt_779|url-access=limited|publisher=Morgan Kaufmann|page=[https://archive.org/details/computerorganiza00patt_779/page/n291 270]|isbn=9780123744937 }}</ref> इसके विपरीत,  सामान्य संख्या का रिप्रेजेंट करने वाला सबसे छोटा बायस्ड घातांक 1 है (नीचे उदाहरण देखें)।
असामान्य नंबर को सभी 0 बिट्स के बायस्ड घातांक के साथ प्रदर्शित किया जाता है, जो सिंगल एक्यूरेसी में −126 के घातांक का रिप्रजेंटेशन करता है (−127 नहीं), या दोहरी एक्यूरेसी में −1022 (−1023 नहीं) का रिप्रजेंटेशन करता है।<ref>{{cite book|last=Hennessy|title=कंप्यूटर संगठन और डिज़ाइन|year=2009|url=https://archive.org/details/computerorganiza00patt_779|url-access=limited|publisher=Morgan Kaufmann|page=[https://archive.org/details/computerorganiza00patt_779/page/n291 270]|isbn=9780123744937 }}</ref> इसके विपरीत,  सामान्य नंबर का रिप्रजेंटेशन करने वाला सबसे छोटा बायस्ड घातांक 1 है (नीचे उदाहरण देखें)।


==गैर-नंबर्स का रिप्रेजेंट ==
==गैर-नंबर्स का रिप्रजेंटेशन ==


किसी कैलकुलेशन की अनंतता या अमान्य परिणाम को प्रदर्शित करने के लिए बायस्ड-घातांक क्षेत्र सभी 1 बिट्स से पूर्ण है।
किसी कैलकुलेशन की अनंतता या अमान्य परिणाम को प्रदर्शित करने के लिए बायस्ड-घातांक क्षेत्र सभी 1 बिट्स से पूर्ण है।
Line 72: Line 72:
=== NaN ===
=== NaN ===


फ़्लोटिंग-पॉइंट अंकगणित के कुछ ऑपरेशन अमान्य हैं, जैसे नेगेटिव संख्या का वर्गमूल लेता है। किसी अमान्य परिणाम तक पहुंचने की क्रिया को फ़्लोटिंग-पॉइंट अपवाद कहा जाता है। असाधारण परिणाम को "नॉट ए नंबर" के लिए NaN नामक विशेष कोड द्वारा प्रदर्शित किया जाता है। आईईईई 754-1985 में सभी NaN का प्रारूप यह है:
फ़्लोटिंग-पॉइंट अंकगणित के कुछ ऑपरेशन अमान्य हैं, जैसे नेगेटिव नंबर का वर्गमूल लेता है। किसी अमान्य परिणाम तक पहुंचने की क्रिया को फ़्लोटिंग-पॉइंट अपवाद कहा जाता है। असाधारण परिणाम को "नॉट ए नंबर" के लिए NaN नामक विशेष कोड द्वारा प्रदर्शित किया जाता है। आईईईई 754-1985 में सभी NaN का फॉर्मेट यह है:


: चिह्न = या तो 0 या 1 होता है।
: चिह्न = या तो 0 या 1 होता है।
: बायस्ड घातांक = सभी 1 बिट्स है।
: बायस्ड घातांक = सभी 1 बिट्स है।
: अपूर्णांक = सभी 0 बिट्स को त्यागकर कुछ भी होता है (क्योंकि सभी 0 बिट्स इनफाइनाइट का रिप्रेजेंट करते हैं)।
: अपूर्णांक = सभी 0 बिट्स को त्यागकर कुछ भी होता है (क्योंकि सभी 0 बिट्स इनफाइनाइट का रिप्रजेंटेशन करते हैं)।


== श्रेणी और एक्यूरेसी ==
== श्रेणी और एक्यूरेसी ==
[[File:IEEE 754 relative precision.svg|thumb|महत्वपूर्ण अंकों की निश्चित संख्या का उपयोग करके दशमलव रिप्रेजेंट की अपेक्षा में सिंगल (बाइनरी 32) और डबल त्रुटिहीन (बाइनरी 64) नंबर्स की सापेक्ष एक्यूरेसी है। सापेक्ष एक्यूरेसी को यहां ulp(x)/x के रूप में परिभाषित किया गया है, जहां ulp(x) x के रिप्रेजेंट में [[अंतिम स्थान पर इकाई]] है, अर्थात  x और अगले रिप्रेजेंट योग्य संख्या के मध्य का अंतर है।]]एक्यूरेसी को दो क्रमिक मंटिसा अभ्यावेदन के मध्य न्यूनतम अंतर के रूप में परिभाषित किया गया है; इस प्रकार यह केवल मंटिसा में फंक्शन है; जबकि अंतर को दो क्रमिक नंबर्स के मध्य के अंतर के रूप में परिभाषित किया गया है।<ref>{{citation |title=Computer Arithmetic |author1=Hossam A. H. Fahmy |author2=Shlomo Waser |author3=Michael J. Flynn |url=http://arith.stanford.edu/~hfahmy/webpages/arith_class/arith.pdf |access-date=2011-01-02 |url-status=dead |archive-url=https://web.archive.org/web/20101008203307/http://arith.stanford.edu/~hfahmy/webpages/arith_class/arith.pdf |archive-date=2010-10-08}}</ref>
[[File:IEEE 754 relative precision.svg|thumb|महत्वपूर्ण अंकों की निश्चित नंबर का उपयोग करके दशमलव रिप्रजेंटेशन की अपेक्षा में सिंगल (बाइनरी 32) और डबल त्रुटिहीन (बाइनरी 64) नंबर्स की सापेक्ष एक्यूरेसी है। सापेक्ष एक्यूरेसी को यहां ulp(x)/x के रूप में परिभाषित किया गया है, जहां ulp(x) x के रिप्रजेंटेशन में [[अंतिम स्थान पर इकाई]] है, अर्थात  x और अगले रिप्रजेंटेशन योग्य नंबर के मध्य का अंतर है।]]एक्यूरेसी को दो क्रमिक मंटिसा अभ्यावेदन के मध्य न्यूनतम अंतर के रूप में परिभाषित किया गया है; इस प्रकार यह केवल मंटिसा में फंक्शन है; जबकि अंतर को दो क्रमिक नंबर्स के मध्य के अंतर के रूप में परिभाषित किया गया है।<ref>{{citation |title=Computer Arithmetic |author1=Hossam A. H. Fahmy |author2=Shlomo Waser |author3=Michael J. Flynn |url=http://arith.stanford.edu/~hfahmy/webpages/arith_class/arith.pdf |access-date=2011-01-02 |url-status=dead |archive-url=https://web.archive.org/web/20101008203307/http://arith.stanford.edu/~hfahmy/webpages/arith_class/arith.pdf |archive-date=2010-10-08}}</ref>


[[एकल परिशुद्धता|'''सिंगल एक्यूरेसी''']]  
[[एकल परिशुद्धता|'''सिंगल एक्यूरेसी''']]  
Line 161: Line 161:
| ≈ 2.02824e31
| ≈ 2.02824e31
|}
|}
उदाहरण के लिए, 16,777,217 को 32-बिट फ़्लोट के रूप में एन्कोड नहीं किया जा सकता क्योंकि इसे 16,777,216 पर पूर्णांकित किया जाएगा। इससे ज्ञात होता है कि फ़्लोटिंग पॉइंट अंकगणित लेखांकन सॉफ़्टवेयर के लिए अनुपयुक्त क्यों है। चूँकि, रिप्रेजेंट योग्य सीमा के अंदर सभी पूर्णांक जो 2 की शक्ति हैं, उन्हें बिना गोलाई के 32-बिट फ़्लोट में संग्रहीत किया जा सकता है।
उदाहरण के लिए, 16,777,217 को 32-बिट फ़्लोट के रूप में एन्कोड नहीं किया जा सकता क्योंकि इसे 16,777,216 पर पूर्णांकित किया जाएगा। इससे ज्ञात होता है कि फ़्लोटिंग पॉइंट अंकगणित लेखांकन सॉफ़्टवेयर के लिए अनुपयुक्त क्यों है। चूँकि, रिप्रजेंटेशन योग्य सीमा के अंदर सभी पूर्णांक जो 2 की शक्ति हैं, उन्हें बिना गोलाई के 32-बिट फ़्लोट में संग्रहीत किया जा सकता है।


=== दोहरी एक्यूरेसी ===
=== दोहरी एक्यूरेसी ===
Line 238: Line 238:
|}
|}


'''विस्तारित प्रारूप'''
'''विस्तारित फॉर्मेट'''


स्टैण्डर्ड राउंड-ऑफ त्रुटियों को कम करने के लिए, अंतिम परिणाम के लिए आवश्यक उच्च एक्यूरेसी पर आंतरिक कैलकुलेशन करने के लिए विस्तारित प्रारूप का उपयोग करने का अनुरोध करता है: स्टैण्डर्ड केवल ऐसे प्रारूपों के लिए न्यूनतम एक्यूरेसी और घातांक आवश्यकताओं को निर्दिष्ट करता है। [[x87]] 80-बिट विस्तारित प्रारूप सबसे अधिक कार्यान्वित विस्तारित प्रारूप है जो इन आवश्यकताओं को पूर्ण करता है।
स्टैण्डर्ड राउंड-ऑफ त्रुटियों को कम करने के लिए, अंतिम परिणाम के लिए आवश्यक उच्च एक्यूरेसी पर आंतरिक कैलकुलेशन करने के लिए विस्तारित फॉर्मेट का उपयोग करने का अनुरोध करता है: स्टैण्डर्ड केवल ऐसे प्रारूपों के लिए न्यूनतम एक्यूरेसी और घातांक आवश्यकताओं को निर्दिष्ट करता है। [[x87]] 80-बिट विस्तारित फॉर्मेट सबसे अधिक कार्यान्वित विस्तारित फॉर्मेट है जो इन आवश्यकताओं को पूर्ण करता है।


== उदाहरण ==
== उदाहरण ==
Line 288: Line 288:
| &minus;1.0
| &minus;1.0
|-
|-
| सबसे छोटी [[Denormal number|असामान्यीकृत संख्या]]
| सबसे छोटी [[Denormal number|असामान्यीकृत नंबर]]
| style="text-align:center;"| *
| style="text-align:center;"| *
| −126
| −126
Line 296: Line 296:
| ±2<sup>&minus;23</sup> &times; 2<sup>&minus;126</sup> = ±2<sup>&minus;149</sup> ≈ ±1.4{{e|-45}}
| ±2<sup>&minus;23</sup> &times; 2<sup>&minus;126</sup> = ±2<sup>&minus;149</sup> ≈ ±1.4{{e|-45}}
|-
|-
| "मध्य" असामान्यीकृत संख्या
| "मध्य" असामान्यीकृत नंबर
| style="text-align:center;"| *
| style="text-align:center;"| *
| −126
| −126
Line 304: Line 304:
| ±2<sup>&minus;1</sup> &times; 2<sup>&minus;126</sup> = ±2<sup>&minus;127</sup> ≈ ±5.88{{e|-39}}
| ±2<sup>&minus;1</sup> &times; 2<sup>&minus;126</sup> = ±2<sup>&minus;127</sup> ≈ ±5.88{{e|-39}}
|-
|-
| सबसे बड़ी असामान्यीकृत संख्या
| सबसे बड़ी असामान्यीकृत नंबर
| style="text-align:center;"| *
| style="text-align:center;"| *
| −126
| −126
Line 312: Line 312:
| ±(1−2<sup>−23</sup>) &times; 2<sup>−126</sup> ≈ ±1.18{{e|-38}}
| ±(1−2<sup>−23</sup>) &times; 2<sup>−126</sup> ≈ ±1.18{{e|-38}}
|-
|-
| सबसे छोटी सामान्यीकृत संख्या
| सबसे छोटी सामान्यीकृत नंबर
| style="text-align:center;"| *
| style="text-align:center;"| *
| −126
| −126
Line 320: Line 320:
| ±2<sup>−126</sup> ≈ ±1.18{{e|-38}}
| ±2<sup>−126</sup> ≈ ±1.18{{e|-38}}
|-
|-
| सबसे बड़ी सामान्यीकृत संख्या
| सबसे बड़ी सामान्यीकृत नंबर
| style="text-align:center;"| *
| style="text-align:center;"| *
| 127
| 127
Line 344: Line 344:
| −∞
| −∞
|-
|-
| [[Not a number|कोई संख्या नहीं]]
| [[Not a number|कोई नंबर नहीं]]
| style="text-align:center;"| *
| style="text-align:center;"| *
| 128
| 128
Line 356: Line 356:


== फ़्लोटिंग-पॉइंट नंबर्स की अपेक्षा करना ==
== फ़्लोटिंग-पॉइंट नंबर्स की अपेक्षा करना ==
नेगेटिव शून्य और पॉजिटिव शून्य के लिए बिट्स के दो संयोजनों को त्यागकर, प्रत्येक संभावित बिट संयोजन या तो NaN है या संबद्ध क्रम के साथ एफ़िनली विस्तारित वास्तविक संख्या प्रणाली में अद्वितीय मान वाला नंबर है, जिस पर कभी-कभी विशेष ध्यान देने की आवश्यकता होती है (नीचे देखें)। बाइनरी रिप्रेजेंट में विशेष गुण होता है कि, NaN को त्यागकर, किसी भी दो नंबर्स की अपेक्षा चिह्न और परिमाण पूर्णांक के रूप में की जा सकती है ([[endianness|एंडियननेस]] उद्देश्य इम्प्लीमेंट होते हैं)। 2 के पूरक पूर्णांकों के रूप में अपेक्षा करते समय: यदि साइन बिट भिन्न होते हैं, तो नेगेटिव संख्या पॉजिटिव संख्या से पूर्व होती है, इसलिए 2 का पूरक सही परिणाम देता है (इसके अतिरिक्त कि नेगेटिव शून्य और पॉजिटिव शून्य को समान माना जाना चाहिए)। यदि दोनों मान पॉजिटिव हैं, तो 2 की पूरक अपेक्षा पुनः उचित परिणाम देती है। अन्यथा (दो नेगेटिव नंबर्स), उचित एफपी क्रम 2 के पूरक क्रम के विपरीत है।
नेगेटिव शून्य और पॉजिटिव शून्य के लिए बिट्स के दो संयोजनों को त्यागकर, प्रत्येक संभावित बिट संयोजन या तो NaN है या संबद्ध क्रम के साथ एफ़िनली विस्तारित वास्तविक नंबर प्रणाली में अद्वितीय मान वाला नंबर है, जिस पर कभी-कभी विशेष ध्यान देने की आवश्यकता होती है (नीचे देखें)। बाइनरी रिप्रजेंटेशन में विशेष गुण होता है कि, NaN को त्यागकर, किसी भी दो नंबर्स की अपेक्षा चिह्न और परिमाण पूर्णांक के रूप में की जा सकती है ([[endianness|एंडियननेस]] उद्देश्य इम्प्लीमेंट होते हैं)। 2 के पूरक पूर्णांकों के रूप में अपेक्षा करते समय: यदि साइन बिट भिन्न होते हैं, तो नेगेटिव नंबर पॉजिटिव नंबर से पूर्व होती है, इसलिए 2 का पूरक सही परिणाम देता है (इसके अतिरिक्त कि नेगेटिव शून्य और पॉजिटिव शून्य को समान माना जाना चाहिए)। यदि दोनों मान पॉजिटिव हैं, तो 2 की पूरक अपेक्षा पुनः उचित परिणाम देती है। अन्यथा (दो नेगेटिव नंबर्स), उचित एफपी क्रम 2 के पूरक क्रम के विपरीत है।


फ़्लोटिंग पॉइंट गणनाओं में निहित राउंडिंग त्रुटियाँ परिणामों की त्रुटिहीन समानता के परीक्षण के लिए अपेक्षाओं के उपयोग को सीमित कर सकती हैं। स्वीकार्य सीमा का चयन करना समष्टि विषय है। सामान्य तकनीक अनुमानित अपेक्षा करने के लिए अपेक्षात्मक ईपीएसलॉन मान का उपयोग करना है।<ref>{{cite web|url=https://github.com/godotengine/godot/blob/master/core/math/math_funcs.h#L302|title=Godot math_funcs.h|website=GitHub.com|date=30 July 2022 }}</ref> अपेक्षाएँ कितनी उदार हैं, इस पर निर्भर करते हुए, सामान्य मूल्यों में सिंगल-एक्यूरेसी के लिए <code>1e-6</code> या <code>1e-5</code>और दोहरी एक्यूरेसी के लिए <code>1e-14</code> सम्मिलित हैं।<ref>{{cite web|url=https://github.com/godotengine/godot/blob/master/core/math/math_defs.h#L34|title=Godot math_defs.h|website=GitHub.com|date=30 July 2022 }}</ref><ref>{{cite web|url=https://github.com/godotengine/godot/blob/master/modules/mono/glue/Managed/Files/MathfEx.cs#L18|title=गोडोट MathfEx.cs|website=GitHub.com}}</ref> अन्य सामान्य तकनीक यूएलपी है, जो यह परीक्षण करती है कि अंतिम स्थान के अंकों में क्या अंतर है, प्रभावी रूप से यह परीक्षण करती है कि दोनों मान कितने दूर हैं।<ref>{{cite web|url=https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/|title=Comparing Floating Point Numbers, 2012 Edition|website=randomascii.wordpress.com|date=26 February 2012 }}</ref>
फ़्लोटिंग पॉइंट गणनाओं में निहित राउंडिंग त्रुटियाँ परिणामों की त्रुटिहीन समानता के परीक्षण के लिए अपेक्षाओं के उपयोग को सीमित कर सकती हैं। स्वीकार्य सीमा का चयन करना समष्टि विषय है। सामान्य तकनीक अनुमानित अपेक्षा करने के लिए अपेक्षात्मक ईपीएसलॉन मान का उपयोग करना है।<ref>{{cite web|url=https://github.com/godotengine/godot/blob/master/core/math/math_funcs.h#L302|title=Godot math_funcs.h|website=GitHub.com|date=30 July 2022 }}</ref> अपेक्षाएँ कितनी उदार हैं, इस पर निर्भर करते हुए, सामान्य मूल्यों में सिंगल-एक्यूरेसी के लिए <code>1e-6</code> या <code>1e-5</code>और दोहरी एक्यूरेसी के लिए <code>1e-14</code> सम्मिलित हैं।<ref>{{cite web|url=https://github.com/godotengine/godot/blob/master/core/math/math_defs.h#L34|title=Godot math_defs.h|website=GitHub.com|date=30 July 2022 }}</ref><ref>{{cite web|url=https://github.com/godotengine/godot/blob/master/modules/mono/glue/Managed/Files/MathfEx.cs#L18|title=गोडोट MathfEx.cs|website=GitHub.com}}</ref> अन्य सामान्य तकनीक यूएलपी है, जो यह परीक्षण करती है कि अंतिम स्थान के अंकों में क्या अंतर है, प्रभावी रूप से यह परीक्षण करती है कि दोनों मान कितने दूर हैं।<ref>{{cite web|url=https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/|title=Comparing Floating Point Numbers, 2012 Edition|website=randomascii.wordpress.com|date=26 February 2012 }}</ref>
Line 365: Line 365:
आईईईई स्टैण्डर्ड में चार भिन्न-भिन्न राउंडिंग मोड हैं; प्रथम डिफ़ॉल्ट है; अन्य को [[निर्देशित गोलाई]] कहा जाता है।
आईईईई स्टैण्डर्ड में चार भिन्न-भिन्न राउंडिंग मोड हैं; प्रथम डिफ़ॉल्ट है; अन्य को [[निर्देशित गोलाई]] कहा जाता है।


* '''<nowiki/>'राउंड टू नियरेस्ट'''' - निकटतम मान तक राउंड; यदि संख्या मध्य में गिरती है तो इसे सम (शून्य) कम से कम महत्वपूर्ण बिट के साथ निकटतम मान तक पूर्णांकित किया जाता है, जिसका अर्थ है कि इसे 50% समय तक पूर्णांकित किया जाता है (आईईईई 754-2008 में इस मोड को दूसरे से अलग करने के लिए राउंडटीज़टूईवन कहा जाता है) -से-निकटतम मोड)।
* '''<nowiki/>'राउंड टू नियरेस्ट'''' - निकटतम मान तक राउंड; यदि नंबर मध्य में गिरती है तो इसे सम (शून्य) कम से कम महत्वपूर्ण बिट के साथ निकटतम मान तक पूर्णांकित किया जाता है, जिसका अर्थ है कि इसे 50% समय तक पूर्णांकित किया जाता है (आईईईई 754-2008 में इस मोड को दूसरे से अलग करने के लिए राउंडटीज़टूईवन कहा जाता है) -से-निकटतम मोड)।
* '''<nowiki/>'राउंड टुवर्ड 0'''' - शून्य की ओर निर्देशित गोलाई।
* '''<nowiki/>'राउंड टुवर्ड 0'''' - शून्य की ओर निर्देशित गोलाई।
* '''<nowiki/>'राउंड टुवर्ड +∞'''' - पॉजिटिव इनफाइनाइट की ओर निर्देशित गोलाई।
* '''<nowiki/>'राउंड टुवर्ड +∞'''' - पॉजिटिव इनफाइनाइट की ओर निर्देशित गोलाई।
Line 371: Line 371:


==वास्तविक नंबर्स का विस्तार==
==वास्तविक नंबर्स का विस्तार==
आईईईई स्टैण्डर्ड भिन्न-भिन्न पॉजिटिव और नेगेटिव अनन्तताओं के साथ, पूर्ण रूप से विस्तारित वास्तविक संख्या प्रणाली को नियोजित (और विस्तारित) करता है। प्रारूपण के समय, प्रोग्रामर को मोड चयन विकल्प प्रदान करके, सिंगल अहस्ताक्षरित इनफाइनाइट के साथ प्रोजेक्टिवली विस्तारित वास्तविक संख्या प्रणाली को सम्मिलित करने के लिए स्टैण्डर्ड का प्रस्ताव था। चूँकि, अंतिम स्टैण्डर्ड की समष्टिता को कम करने के हित में, प्रोजेक्टिव मोड को विस्थापित कर दिया गया था। इंटेल 8087 और [[Intel 80287|इंटेल 80287]] फ़्लोटिंग पॉइंट सह-प्रोसेसर दोनों इस प्रोजेक्टिव मोड का समर्थन करते हैं।<ref>{{cite journal|journal=ACM Transactions on Programming Languages and Systems|volume=18|issue=2|date=March 1996|format=PDF|url=http://www.jhauser.us/publications/1996_Hauser_FloatingPointExceptions.html|author=John R. Hauser|title=संख्यात्मक कार्यक्रमों में फ़्लोटिंग-पॉइंट अपवादों को संभालना|doi=10.1145/227699.227701|pages=139–174|s2cid=9820157}}</ref><ref>{{cite journal|title=IEEE Task P754: A proposed standard for binary floating-point arithmetic|date=March 1981|journal=IEEE Computer|volume=14|issue=3|pages=51–62|author=David Stevenson|doi=10.1109/C-M.1981.220377|s2cid=15523399 }}</ref><ref>{{cite journal|author= William Kahan and John Palmer|year=1979|title=प्रस्तावित फ़्लोटिंग-पॉइंट मानक पर|journal=SIGNUM Newsletter|volume=14|issue=Special|pages=13–21|doi= 10.1145/1057520.1057522|s2cid=16981715}}</ref>
आईईईई स्टैण्डर्ड भिन्न-भिन्न पॉजिटिव और नेगेटिव अनन्तताओं के साथ, पूर्ण रूप से विस्तारित वास्तविक नंबर प्रणाली को नियोजित (और विस्तारित) करता है। प्रारूपण के समय, प्रोग्रामर को मोड चयन विकल्प प्रदान करके, सिंगल अहस्ताक्षरित इनफाइनाइट के साथ प्रोजेक्टिवली विस्तारित वास्तविक नंबर प्रणाली को सम्मिलित करने के लिए स्टैण्डर्ड का प्रस्ताव था। चूँकि, अंतिम स्टैण्डर्ड की समष्टिता को कम करने के हित में, प्रोजेक्टिव मोड को विस्थापित कर दिया गया था। इंटेल 8087 और [[Intel 80287|इंटेल 80287]] फ़्लोटिंग पॉइंट सह-प्रोसेसर दोनों इस प्रोजेक्टिव मोड का समर्थन करते हैं।<ref>{{cite journal|journal=ACM Transactions on Programming Languages and Systems|volume=18|issue=2|date=March 1996|format=PDF|url=http://www.jhauser.us/publications/1996_Hauser_FloatingPointExceptions.html|author=John R. Hauser|title=संख्यात्मक कार्यक्रमों में फ़्लोटिंग-पॉइंट अपवादों को संभालना|doi=10.1145/227699.227701|pages=139–174|s2cid=9820157}}</ref><ref>{{cite journal|title=IEEE Task P754: A proposed standard for binary floating-point arithmetic|date=March 1981|journal=IEEE Computer|volume=14|issue=3|pages=51–62|author=David Stevenson|doi=10.1109/C-M.1981.220377|s2cid=15523399 }}</ref><ref>{{cite journal|author= William Kahan and John Palmer|year=1979|title=प्रस्तावित फ़्लोटिंग-पॉइंट मानक पर|journal=SIGNUM Newsletter|volume=14|issue=Special|pages=13–21|doi= 10.1145/1057520.1057522|s2cid=16981715}}</ref>


== फंक्शन्स और प्रेडिकेट्स ==
== फंक्शन्स और प्रेडिकेट्स ==
Line 393: Line 393:
* <code>unordered(x, y)</code> सत्य है जब x, y के साथ अव्यवस्थित है, अर्थात, x या y  NaN है।
* <code>unordered(x, y)</code> सत्य है जब x, y के साथ अव्यवस्थित है, अर्थात, x या y  NaN है।
* <code>class(x)</code>
* <code>class(x)</code>
* <code>nextafter(x,y)</code> x से y की दिशा में अगला रिप्रेजेंट योग्य मान प्रदान करता है।
* <code>nextafter(x,y)</code> x से y की दिशा में अगला रिप्रजेंटेशन योग्य मान प्रदान करता है।


==इतिहास==
==इतिहास==
Line 400: Line 400:
जॉन पामर, जिन्होंने इस परियोजना का प्रबंधन किया था, इसका मानना ​​था कि इस प्रयास को भिन्न-भिन्न प्रोसेसरों में  स्टैण्डर्ड एकीकृत फ़्लोटिंग पॉइंट संचालन द्वारा समर्थित किया जाना चाहिए। उन्होंने [[कैलिफोर्निया विश्वविद्यालय]] के [[विलियम कहाँ|विलियम काहन]] से संपर्क किया, जिन्होंने[[ हेवलेट पैकर्ड ]]के कैलकुलेटर की एक्यूरेसी में सुधार करने में सहायता की थी। काहन ने सुझाव दिया कि इंटेल[[ डिजिटल उपकरण निगम | डिजिटल इक्विपमेंट कॉर्पोरेशन]] (डीईसी) वैक्स के फ्लोटिंग पॉइंट का उपयोग करता है। प्रथम वैक्स, वैक्स-11/780 1977 के अंत में सामने आया था, और इसके फ्लोटिंग पॉइंट को अत्यधिक महत्व दिया गया था। चूँकि, अपनी चिप को व्यापक मार्केट में विक्रय के लिए, इंटेल सर्वोत्तम फ़्लोटिंग पॉइंट चाहता था, और काहन ने विशिष्टताओं को प्रस्तुत किया था।<ref name="Intel_2016_Case"/> काहन ने प्रारंभ में अनुरोध किया था कि फ़्लोटिंग पॉइंट बेस दशमलव हो<ref>W. Kahan 2003, pers. comm. to [[Mike Cowlishaw]] and others after an IEEE 754 meeting</ref>{{unreliable source?|date=October 2016}} किन्तु कोप्रोसेसर का हार्डवेयर डिज़ाइन उस परिवर्तन को करने के लिए अधिक दूर था।
जॉन पामर, जिन्होंने इस परियोजना का प्रबंधन किया था, इसका मानना ​​था कि इस प्रयास को भिन्न-भिन्न प्रोसेसरों में  स्टैण्डर्ड एकीकृत फ़्लोटिंग पॉइंट संचालन द्वारा समर्थित किया जाना चाहिए। उन्होंने [[कैलिफोर्निया विश्वविद्यालय]] के [[विलियम कहाँ|विलियम काहन]] से संपर्क किया, जिन्होंने[[ हेवलेट पैकर्ड ]]के कैलकुलेटर की एक्यूरेसी में सुधार करने में सहायता की थी। काहन ने सुझाव दिया कि इंटेल[[ डिजिटल उपकरण निगम | डिजिटल इक्विपमेंट कॉर्पोरेशन]] (डीईसी) वैक्स के फ्लोटिंग पॉइंट का उपयोग करता है। प्रथम वैक्स, वैक्स-11/780 1977 के अंत में सामने आया था, और इसके फ्लोटिंग पॉइंट को अत्यधिक महत्व दिया गया था। चूँकि, अपनी चिप को व्यापक मार्केट में विक्रय के लिए, इंटेल सर्वोत्तम फ़्लोटिंग पॉइंट चाहता था, और काहन ने विशिष्टताओं को प्रस्तुत किया था।<ref name="Intel_2016_Case"/> काहन ने प्रारंभ में अनुरोध किया था कि फ़्लोटिंग पॉइंट बेस दशमलव हो<ref>W. Kahan 2003, pers. comm. to [[Mike Cowlishaw]] and others after an IEEE 754 meeting</ref>{{unreliable source?|date=October 2016}} किन्तु कोप्रोसेसर का हार्डवेयर डिज़ाइन उस परिवर्तन को करने के लिए अधिक दूर था।


इंटेल के अंदर कार्य ने अन्य विक्रेताओं को चिंतित कर दिया, जिन्होंने समान संयोग सुनिश्चित करने के लिए मानकीकरण प्रयास स्थापित किया था। काहन ने नवंबर 1977 में आयोजित दूसरी आईईईई 754 स्टैण्डर्ड कार्य समूह की बैठक में भाग लिया था। अंत में उन्हें इंटेल से उनके कोप्रोसेसर के लिए उनके कार्य के आधार पर ड्राफ्ट प्रस्ताव प्रस्तुत करने की अनुमति प्राप्त हुई; उन्हें प्रारूप के विवरण और उसके औचित्य को समझाने की अनुमति प्रदान की गई थी, किन्तु इंटेल के कार्यान्वयन वास्तुकला से संबंधित कुछ भी नहीं था। ड्राफ्ट जेरोम कूनन और हेरोल्ड स्टोन के साथ सह-लिखित था, और प्रारंभ में इसे काहन-कूनन-स्टोन प्रस्ताव या के-सी-एस प्रारूप के रूप में जाना जाता था।<ref name="Intel_2016_Case"/><ref name="Kahan_1998_Story"/><ref name="Woehr_1997_Kahan"/><ref name="Chuck_Kahan_Interview"/>
इंटेल के अंदर कार्य ने अन्य विक्रेताओं को चिंतित कर दिया, जिन्होंने समान संयोग सुनिश्चित करने के लिए मानकीकरण प्रयास स्थापित किया था। काहन ने नवंबर 1977 में आयोजित दूसरी आईईईई 754 स्टैण्डर्ड कार्य समूह की बैठक में भाग लिया था। अंत में उन्हें इंटेल से उनके कोप्रोसेसर के लिए उनके कार्