आईईईई 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 9: Line 9:
!लेवल  
!लेवल  
!विड्थ  
!विड्थ  
!पूर्ण त्रुटिहीनता से रेंज करें
!पूर्ण एक्यूरेसी से रेंज करें
!त्रुटिहीनता{{efn|Precision: The number of decimal digits precision is calculated via number_of_mantissa_bits * Log<sub>10</sub>(2). Thus ~7.2 and ~15.9 for single and double precision respectively.}}
!एक्यूरेसी{{efn|Precision: The number of decimal digits precision is calculated via number_of_mantissa_bits * Log<sub>10</sub>(2). Thus ~7.2 and ~15.9 for single and double precision respectively.}}
|-
|-
|एकल त्रुटिहीनता
|सिंगल एक्यूरेसी
|32 bits
|32 bits
|±1.18{{e|-38}} to ±3.4{{e|38}}
|±1.18{{e|-38}} to ±3.4{{e|38}}
|लगभग 7 दशमलव अंक
|लगभग 7 दशमलव अंक
|-
|-
|दोगुना त्रुटिहीनता
|डबल एक्यूरेसी
|64 bits
|64 bits
|±2.23{{e|-308}} to ±1.80{{e|308}}
|±2.23{{e|-308}} to ±1.80{{e|308}}
|लगभग 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 48: Line 48:
शून्य संख्या को विशेष रूप से प्रदर्शित किया गया है:
शून्य संख्या को विशेष रूप से प्रदर्शित किया गया है:


: धनात्मक शून्य के लिए चिह्न = 0, ऋणात्मक शून्य के लिए 1 है।
: पॉजिटिव शून्य के लिए चिह्न = 0, नेगेटिव शून्य के लिए 1 है।
: बायस्ड घातांक = 0 है।
: बायस्ड घातांक = 0 है।
: अपूर्णांक = 0 है।
: अपूर्णांक = 0 है।


=== असामान्यीकृत संख्याएँ ===
=== असामान्यीकृत नंबर्स ===


ऊपर वर्णित संख्या निरूपण को सामान्यीकृत कहा जाता है, जिसका अर्थ है कि अंतर्निहित अग्रणी बाइनरी अंक 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 बिट्स से पूर्ण है।


=== धनात्मक और ऋणात्मक अनंत ===
=== पॉजिटिव और नेगेटिव इनफाइनाइट ===


[[विस्तारित वास्तविक रेखा|धनात्मक और ऋणात्मक अनंत]] को इस प्रकार प्रदर्शित किया गया है:
[[विस्तारित वास्तविक रेखा|पॉजिटिव और नेगेटिव इनफाइनाइट]] को इस प्रकार प्रदर्शित किया गया है:


: धनात्मक अनंत के लिए चिह्न = 0, ऋणात्मक अनंत के लिए 1 है।
: पॉजिटिव इनफाइनाइट के लिए चिह्न = 0, नेगेटिव इनफाइनाइट के लिए 1 है।
: बायस्ड घातांक = सभी 1 बिट्स है।
: बायस्ड घातांक = सभी 1 बिट्स है।
: अपूर्णांक = सभी 0 बिट्स है।
: अपूर्णांक = सभी 0 बिट्स है।
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>


[[एकल परिशुद्धता|'''एकल त्रुटिहीनता''']]  
[[एकल परिशुद्धता|'''सिंगल एक्यूरेसी''']]  


एकल-त्रुटिहीन संख्याएँ 32 बिट्स पर व्याप्त हैं। एकल त्रुटिहीनता में:
सिंगल-त्रुटिहीन नंबर्स 32 बिट्स पर व्याप्त हैं। सिंगल एक्यूरेसी में:
* शून्य के निकटतम धनात्मक और ऋणात्मक संख्याएं (घातक क्षेत्र में सभी 0 के साथ असामान्य मान और अपूर्णांक क्षेत्र में बाइनरी मान 1 द्वारा प्रदर्शित की जाती हैं) हैं:
* शून्य के निकटतम पॉजिटिव और नेगेटिव नंबर्स (घातक क्षेत्र में सभी 0 के साथ असामान्य मान और अपूर्णांक क्षेत्र में बाइनरी मान 1 द्वारा प्रदर्शित की जाती हैं) हैं:
*: ±2<sup>−23</sup>×2<sup>−126</sup> ≈ ±1.40130{{e|−45}}
*: ±2<sup>−23</sup>×2<sup>−126</sup> ≈ ±1.40130{{e|−45}}
* शून्य के निकटतम धनात्मक और ऋणात्मक सामान्यीकृत संख्याएं (घातक क्षेत्र में बाइनरी मान 1 और अपूर्णांक क्षेत्र में 0 के साथ प्रदर्शित की जाती हैं) हैं:
* शून्य के निकटतम पॉजिटिव और नेगेटिव सामान्यीकृत नंबर्स (घातक क्षेत्र में बाइनरी मान 1 और अपूर्णांक क्षेत्र में 0 के साथ प्रदर्शित की जाती हैं) हैं:
*: ±1 × 2<sup>−126</sup> ≈ ±1.17549{{e|−38}}
*: ±1 × 2<sup>−126</sup> ≈ ±1.17549{{e|−38}}
* शून्य से सबसे दूर की परिमित धनात्मक और परिमित ऋणात्मक संख्याएँ (घातक क्षेत्र में 254 और अपूर्णांक क्षेत्र में सभी 1 के साथ मान द्वारा प्रदर्शित की गई) हैं:
* शून्य से सबसे दूर की परिमित पॉजिटिव और परिमित नेगेटिव नंबर्स (घातक क्षेत्र में 254 और अपूर्णांक क्षेत्र में सभी 1 के साथ मान द्वारा प्रदर्शित की गई) हैं:
*: ±(2−2<sup>−23</sup>) × 2<sup>127</sup><ref name="Kahan">{{Cite document
*: ±(2−2<sup>−23</sup>) × 2<sup>127</sup><ref name="Kahan">{{Cite document
   | author = William Kahan |author-link=William Kahan
   | author = William Kahan |author-link=William Kahan
Line 97: Line 97:
   | access-date = 2007-04-12 }}</ref> ≈ ±3.40282{{e|38}}
   | access-date = 2007-04-12 }}</ref> ≈ ±3.40282{{e|38}}


एकल त्रुटिहीनता में दिए गए घातांक के लिए कुछ उदाहरण सीमा और अंतराल मान है:
सिंगल एक्यूरेसी में दिए गए घातांक के लिए कुछ उदाहरण सीमा और अंतराल मान है:


{| class="wikitable" style="text-align:right;"
{| class="wikitable" style="text-align:right;"
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-बिट फ़्लोट में संग्रहीत किया जा सकता है।


=== दोहरी त्रुटिहीनता ===
=== दोहरी एक्यूरेसी ===


डबल-त्रुटिहीन संख्याएँ 64 बिट्स पर व्याप्त हैं। दोहरी त्रुटिहीनता में:
डबल-त्रुटिहीन नंबर्स 64 बिट्स पर व्याप्त हैं। दोहरी एक्यूरेसी में:
* शून्य के निकटतम धनात्मक और ऋणात्मक संख्याएं (एक्सप क्षेत्र में सभी 0 के साथ असामान्य मान और अपूर्णांक क्षेत्र में बाइनरी मान 1 द्वारा प्रदर्शित की जाती हैं) हैं
* शून्य के निकटतम पॉजिटिव और नेगेटिव नंबर्स (एक्सप क्षेत्र में सभी 0 के साथ असामान्य मान और अपूर्णांक क्षेत्र में बाइनरी मान 1 द्वारा प्रदर्शित की जाती हैं) हैं
*: ±2<sup>−52</sup>×2<sup>−1022</sup> ≈ ±4.94066{{e|−324}}
*: ±2<sup>−52</sup>×2<sup>−1022</sup> ≈ ±4.94066{{e|−324}}
* शून्य के निकटतम धनात्मक और ऋणात्मक सामान्यीकृत संख्याएं (एक्सप क्षेत्र में बाइनरी मान 1 और अपूर्णांक क्षेत्र में 0 के साथ प्रदर्शित की जाती हैं) हैं:
* शून्य के निकटतम पॉजिटिव और नेगेटिव सामान्यीकृत नंबर्स (एक्सप क्षेत्र में बाइनरी मान 1 और अपूर्णांक क्षेत्र में 0 के साथ प्रदर्शित की जाती हैं) हैं:
*: ±1 × 2<sup>−1022</sup> ≈ ±2.22507{{e|−308}}
*: ±1 × 2<sup>−1022</sup> ≈ ±2.22507{{e|−308}}
* शून्य से सबसे दूर की परिमित धनात्मक और परिमित ऋणात्मक संख्याएँ (एक्सप क्षेत्र में 2046 और अपूर्णांक क्षेत्र में सभी 1 के साथ मान द्वारा प्रदर्शित की गई) हैं:
* शून्य से सबसे दूर की परिमित पॉजिटिव और परिमित नेगेटिव नंबर्स (एक्सप क्षेत्र में 2046 और अपूर्णांक क्षेत्र में सभी 1 के साथ मान द्वारा प्रदर्शित की गई) हैं:
*: ±(2−2<sup>−52</sup>)×2<sup>1023</sup><ref name="Kahan" />≈ ±1.79769{{e|308}}
*: ±(2−2<sup>−52</sup>)×2<sup>1023</sup><ref name="Kahan" />≈ ±1.79769{{e|308}}


दोहरी त्रुटिहीनता में दिए गए घातांक के लिए कुछ उदाहरण सीमा और अंतराल मान है:
दोहरी एक्यूरेसी में दिए गए घातांक के लिए कुछ उदाहरण सीमा और अंतराल मान है:


{| class="wikitable" style="text-align:right;"
{| class="wikitable" style="text-align:right;"
Line 240: Line 240:
'''विस्तारित प्रारूप'''
'''विस्तारित प्रारूप'''


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


== उदाहरण ==
== उदाहरण ==


यहां एकल-त्रुटिहीन आईईईई 754 अभ्यावेदन के कुछ उदाहरण दिए गए हैं:
यहां सिंगल-त्रुटिहीन आईईईई 754 अभ्यावेदन के कुछ उदाहरण दिए गए हैं:


{| class="wikitable"
{| class="wikitable"
Line 264: Line 264:
| 0.0
| 0.0
|-
|-
| [[Negative zero|ऋणात्मक शून्य]]
| [[Negative zero|नेगेटिव शून्य]]
| style="text-align:center;"| 1
| style="text-align:center;"| 1
| −126
| −126
Line 328: Line 328:
| ±(2&minus;2<sup>−23</sup>) &times; 2<sup>127</sup> ≈ ±3.4{{e|38}}
| ±(2&minus;2<sup>−23</sup>) &times; 2<sup>127</sup> ≈ ±3.4{{e|38}}
|-
|-
| धनात्मक अनन्तता
| पॉजिटिव अनन्तता
| style="text-align:center;"| 0
| style="text-align:center;"| 0
| 128
| 128
Line 336: Line 336:
| +∞
| +∞
|-
|-
| ऋणात्मक अनन्तता
| नेगेटिव अनन्तता
| style="text-align:center;"| 1
| style="text-align:center;"| 1
| 128
| 128
Line 355: Line 355:
|}
|}


== फ़्लोटिंग-पॉइंट संख्याओं की अपेक्षा करना ==
== फ़्लोटिंग-पॉइंट नंबर्स की अपेक्षा करना ==
ऋणात्मक शून्य और धनात्मक शून्य के लिए बिट्स के दो संयोजनों को त्यागकर, प्रत्येक संभावित बिट संयोजन या तो 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>
फ़्लोटिंग पॉइंट गणनाओं में निहि