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

From Vigyanwiki
No edit summary
No edit summary
Line 3: Line 3:
'''आईईईई 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 27: Line 27:


[[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 की उचित शक्ति से गुणा करते हैं:
Line 34: Line 34:
अब हम भिन्न और घातांक को पढ़ सकते हैं: भिन्न .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 बिट्स है।


=== 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}}
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;"
|- style="text-align:center;"
|- style="text-align:center;"
! वास्तविक प्रतिपादक (अनबायस्ड)
! वास्तविक घातांक (अनबायस्ड)
! प्रतिपादक (बायस्ड)
! घातांक (बायस्ड)
! न्यूनतम
! न्यूनतम
! अधिकतम
! अधिकतम
Line 165: Line 165:
=== दोहरी परिशुद्धता ===
=== दोहरी परिशुद्धता ===


डबल-त्रुटिहीन संख्याएँ 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;"
|- style="text-align:center;"
|- style="text-align:center;"
! वास्तविक प्रतिपादक (अनबायस्ड)
! वास्तविक घातांक (अनबायस्ड)
! प्रतिपादक (बायस्ड)
! घातांक (बायस्ड)
! न्यूनतम
! न्यूनतम
! अधिकतम
! अधिकतम
Line 240: Line 240:
'''विस्तारित प्रारूप'''
'''विस्तारित प्रारूप'''


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


== उदाहरण ==
== उदाहरण ==
Line 358: Line 358:
ऋणात्मक शून्य और धनात्मक शून्य के लिए बिट्स के दो संयोजनों को छोड़कर, प्रत्येक संभावित बिट संयोजन या तो  NaN है या संबद्ध क्रम के साथ एफ़िनली विस्तारित वास्तविक संख्या प्रणाली में  अद्वितीय मान वाला  नंबर है, जिस पर कभी-कभी विशेष ध्यान देने की आवश्यकता होती है (नीचे देखें) . #Repretation_of_numbers में विशेष गुण है कि, NaN को छोड़कर, किसी भी दो संख्याओं की तुलना चिह्न और परिमाण पूर्णांक के रूप में की जा सकती है ([[endianness]] मुद्दे लागू होते हैं)। 2 के पूरक पूर्णांकों के रूप में तुलना करते समय: यदि साइन बिट भिन्न होते हैं, तो नकारात्मक संख्या सकारात्मक संख्या से पहले होती है, इसलिए 2 का पूरक सही परिणाम देता है (सिवाय इसके कि नकारात्मक शून्य और सकारात्मक शून्य को समान माना जाना चाहिए)। यदि दोनों मान सकारात्मक हैं, तो 2 की पूरक तुलना फिर से सही परिणाम देती है। अन्यथा (दो नकारात्मक संख्याएं), सही एफपी क्रम 2 के पूरक क्रम के विपरीत है।
ऋणात्मक शून्य और धनात्मक शून्य के लिए बिट्स के दो संयोजनों को छोड़कर, प्रत्येक संभावित बिट संयोजन या तो  NaN है या संबद्ध क्रम के साथ एफ़िनली विस्तारित वास्तविक संख्या प्रणाली में  अद्वितीय मान वाला  नंबर है, जिस पर कभी-कभी विशेष ध्यान देने की आवश्यकता होती है (नीचे देखें) . #Repretation_of_numbers में विशेष गुण है कि, 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>
चूँकि तुलनात्मक उद्देश्यों के लिए नकारात्मक शून्य और सकारात्मक शून्य को सामान्यतः समान माना जाता है, कुछ [[प्रोग्रामिंग भाषा]] [[रिलेशनल ऑपरेटर]] और समान निर्माण उन्हें अलग मानते हैं। [[जावा (प्रोग्रामिंग भाषा)]] भाषा विशिष्टता के अनुसार,<ref>{{cite web|url=http://java.sun.com/docs/books/jls/|title=जावा भाषा और वर्चुअल मशीन विशिष्टताएँ|website=Java Documentation}}</ref> तुलना और समानता संचालक उन्हें समान मानते हैं, किन्तु <code>Math.min()</code> और <code>Math.max()</code> उन्हें अलग करें (आधिकारिक तौर पर जावा संस्करण 1.1 से शुरू करें किन्तु वास्तव में 1.1.1 से), जैसा कि तुलना विधियां करती हैं <code>equals()</code>, <code>compareTo()</code> और भी <code>compare()</code> कक्षाओं का <code>Float</code> और <code>Double</code>.
चूँकि तुलनात्मक उद्देश्यों के लिए नकारात्मक शून्य और सकारात्मक शून्य को सामान्यतः समान माना जाता है, कुछ [[प्रोग्रामिंग भाषा]] [[रिलेशनल ऑपरेटर]] और समान निर्माण उन्हें अलग मानते हैं। [[जावा (प्रोग्रामिंग भाषा)]] भाषा विशिष्टता के अनुसार,<ref>{{cite web|url=http://java.sun.com/docs/books/jls/|title=जावा भाषा और वर्चुअल मशीन विशिष्टताएँ|website=Java Documentation}}</ref> तुलना और समानता संचालक उन्हें समान मानते हैं, किन्तु <code>Math.min()</code> और <code>Math.max()</code> उन्हें अलग करें (आधिकारिक तौर पर जावा संस्करण 1.1 से शुरू करें किन्तु वास्तव में 1.1.1 से), जैसा कि तुलना विधियां करती हैं <code>equals()</code>, <code>compareTo()</code> और भी <code>compare()</code> कक्षाओं का <code>Float</code> और <code>Double</code>.


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


चूंकि 8-बिट प्रतिपादक दोहरे-परिशुद्धता संख्याओं के लिए वांछित कुछ परिचालनों के लिए पर्याप्त चौड़ा नहीं था, उदाहरण के लिए दो 32-बिट संख्याओं के उत्पाद को संग्रहीत करने के लिए,<ref name="Microsoft_2006_KB35826"/> काहन के प्रस्ताव और डीईसी के प्रति-प्रस्ताव दोनों में 11 बिट्स का उपयोग किया गया, जैसे कि 1965 से [[सीडीसी 6600]] के समय-परीक्षणित सीडीसी 6600#60-बिट फ़्लोटिंग पॉइंट|60-बिट फ़्लोटिंग-पॉइंट प्रारूप।<ref name="Kahan_1998_Story"/><ref name="Chuck_Kahan_Interview"/><ref name="Thornton_1970_CDC6600"/>कहन के प्रस्ताव में अनन्तताओं का भी प्रावधान किया गया है, जो विभाजन-दर-शून्य स्थितियों से निपटने में उपयोगी होते हैं; नॉट-ए-नंबर मान, जो अमान्य संचालन से निपटने में उपयोगी होते हैं; [[असामान्य संख्या]]एँ, जो अंडरफ्लो के कारण होने वाली समस्याओं को कम करने में मदद करती हैं;<ref name="Chuck_Kahan_Interview"/><ref name="Kahan_Why"/><ref name="Kahan_Java"/>और  बेहतर संतुलित घातांक पूर्वाग्रह, जो किसी संख्या का व्युत्क्रम लेते समय अतिप्रवाह और अल्पप्रवाह से बचने में मदद कर सकता है।<ref name="Turner_2013"/><ref name="Kahan_Names"/>
चूंकि 8-बिट घातांक दोहरे-त्रुटिहीनता संख्याओं के लिए वांछित कुछ परिचालनों के लिए पर्याप्त चौड़ा नहीं था, उदाहरण के लिए दो 32-बिट संख्याओं के उत्पाद को संग्रहीत करने के लिए,<ref name="Microsoft_2006_KB35826"/> काहन के प्रस्ताव और डीईसी के प्रति-प्रस्ताव दोनों में 11 बिट्स का उपयोग किया गया, जैसे कि 1965 से [[सीडीसी 6600]] के समय-परीक्षणित सीडीसी 6600#60-बिट फ़्लोटिंग पॉइंट|60-बिट फ़्लोटिंग-पॉइंट प्रारूप।<ref name="Kahan_1998_Story"/><ref name="Chuck_Kahan_Interview"/><ref name="Thornton_1970_CDC6600"/>कहन के प्रस्ताव में अनन्तताओं का भी प्रावधान किया गया है, जो विभाजन-दर-शून्य स्थितियों से निपटने में उपयोगी होते हैं; नॉट-ए-नंबर मान, जो अमान्य संचालन से निपटने में उपयोगी होते हैं; [[असामान्य संख्या]]एँ, जो अंडरफ्लो के कारण होने वाली समस्याओं को कम करने में मदद करती हैं;<ref name="Chuck_Kahan_Interview"/><ref name="Kahan_Why"/><ref name="Kahan_Java"/>और  बेहतर संतुलित घातांक पूर्वाग्रह, जो किसी संख्या का व्युत्क्रम लेते समय अतिप्रवाह और अल्पप्रवाह से बचने में मदद कर सकता है।<ref name="Turner_2013"/><ref name="Kahan_Names"/>


अनुमोदित होने से पहले ही, ड्राफ्ट मानक को कई निर्माताओं द्वारा लागू किया गया था।<ref>{{cite web|url=http://www.eecs.berkeley.edu/~wkahan/ieee754status/754story.html|title=फ़्लोटिंग-प्वाइंट के बूढ़े आदमी के साथ एक साक्षात्कार| author=Charles Severance |author-link=Charles Severance (computer scientist) |date=20 February 1998}}</ref><ref>{{cite web|publisher=Connexions |url=http://cnx.org/content/m32770/latest/ |title=आईईईई फ़्लोटिंग-पॉइंट प्रारूप का इतिहास|author=Charles Severance |author-link=Charles Severance (computer scientist) |archive-url=https://web.archive.org/web/20091120095507/http://cnx.org/content/m32770/latest/ |archive-date=2009-11-20 |url-status=dead}}</ref> इंटेल 8087, जिसे 1980 में घोषित किया गया था, ड्राफ्ट मानक को लागू करने वाली पहली चिप थी।
अनुमोदित होने से पहले ही, ड्राफ्ट मानक को कई निर्माताओं द्वारा लागू किया गया था।<ref>{{cite web|url=http://www.eecs.berkeley.edu/~wkahan/ieee754status/754story.html|title=फ़्लोटिंग-प्वाइंट के बूढ़े आदमी के साथ एक साक्षात्कार| author=Charles Severance |author-link=Charles Severance (computer scientist) |date=20 February 1998}}</ref><ref>{{cite web|publisher=Connexions |url=http://cnx.org/content/m32770/latest/ |title=आईईईई फ़्लोटिंग-पॉइंट प्रारूप का इतिहास|author=Charles Severance |author-link=Charles Severance (computer scientist) |archive-url=https://web.archive.org/web/20091120095507/http://cnx.org/content/m32770/latest/ |archive-date=2009-11-20 |url-status=dead}}</ref> इंटेल 8087, जिसे 1980 में घोषित किया गया था, ड्राफ्ट मानक को लागू करने वाली पहली चिप थी।

Revision as of 19:35, 12 August 2023

आईईईई 754-1985[1] कंप्यूटर में फ्लोटिंग-पॉइंट नंबरों का प्रतिनिधित्व करने के लिए उद्योग मानक था, जिसे सामान्यतः 1985 में स्वीकार किया गया था और 2008 में आईईईई 754-2008 द्वारा प्रतिस्थापित किया गया था, और फिर 2019 में सामान्य संशोधन आईईईई 754-2019 द्वारा प्रतिस्थापित किया गया था।[2] अपने 23 वर्षों के समय, यह फ़्लोटिंग-पॉइंट गणना के लिए सबसे व्यापक रूप से उपयोग किया जाने वाला प्रारूप था।