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

From Vigyanwiki
(Created page with "{{short description|First edition of the IEEE 754 floating-point standard}} {{See also|IEEE 754}} आईईईई 754-1985<ref>{{Cite book|title=बाइनरी फ़्...")
 
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|IEEE 754}}
{{See also|IEEE 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]] द्वारा प्रतिस्थापित किया गया था, और फिर 2019 में मामूली संशोधन [[IEEE 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]] द्वारा प्रतिस्थापित किया गया था, और फिर 2019 में मामूली संशोधन [[IEEE 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 बाइनरी अंक प्रणाली में संख्याओं का प्रतिनिधित्व करता है, जो परिशुद्धता के चार स्तरों की परिभाषा प्रदान करता है, जिनमें से दो सबसे अधिक उपयोग किए जाते हैं:
Line 22: Line 22:
|Approximately 16 decimal digits
|Approximately 16 decimal digits
|}
|}
मानक सकारात्मक और नकारात्मक अनंत के लिए प्रतिनिधित्व को भी परिभाषित करता है, एक [[नकारात्मक शून्य]], [[शून्य से विभाजन]] जैसे अमान्य परिणामों को संभालने के लिए पांच अपवाद, उन अपवादों का प्रतिनिधित्व करने के लिए [[NaN]] नामक विशेष मान, ऊपर दिखाए गए से छोटी संख्याओं का प्रतिनिधित्व करने के लिए [[असामान्य संख्या]]एं, और चार गोल मोड।
मानक सकारात्मक और नकारात्मक अनंत के लिए प्रतिनिधित्व को भी परिभाषित करता है, [[नकारात्मक शून्य]], [[शून्य से विभाजन]] जैसे अमान्य परिणामों को संभालने के लिए पांच अपवाद, उन अपवादों का प्रतिनिधित्व करने के लिए [[NaN]] नामक विशेष मान, ऊपर दिखाए गए से छोटी संख्याओं का प्रतिनिधित्व करने के लिए [[असामान्य संख्या]]एं, और चार गोल मोड।


==संख्याओं का प्रतिनिधित्व==
==संख्याओं का प्रतिनिधित्व==


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


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


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


अग्रणी 1 बिट को हटा दिया गया है क्योंकि शून्य को छोड़कर सभी संख्याएँ अग्रणी 1 से शुरू होती हैं; अग्रणी 1 अंतर्निहित है और वास्तव में इसे संग्रहीत करने की आवश्यकता नहीं है जो मुफ़्त में अतिरिक्त परिशुद्धता देता है।
अग्रणी 1 बिट को हटा दिया गया है क्योंकि शून्य को छोड़कर सभी संख्याएँ अग्रणी 1 से शुरू होती हैं; अग्रणी 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 है (नीचे #उदाहरण देखें)।


==गैर-संख्याओं का प्रतिनिधित्व ==
==गैर-संख्याओं का प्रतिनिधित्व ==
Line 72: Line 72:
=== NaN ===
=== NaN ===


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


: चिह्न = या तो 0 या 1.
: चिह्न = या तो 0 या 1.
Line 79: Line 79:


== सीमा और परिशुद्धता ==
== सीमा और परिशुद्धता ==
[[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;"
Line 166: Line 166:


डबल-सटीक संख्याएँ 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}}


Line 238: Line 238:
|}
|}


 
'''विस्तारित प्रारूप'''
=== विस्तारित प्रारूप ===


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


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


{| class="wikitable"
{| class="wikitable"
Line 356: Line 355:
|}
|}


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


==वास्तविक संख्याओं का विस्तार==
==वास्तविक संख्याओं का विस्तार==
आईईईई मानक अलग-अलग सकारात्मक और नकारात्मक अनन्तताओं के साथ, पूर्ण रूप से विस्तारित वास्तविक संख्या प्रणाली को नियोजित (और विस्तारित) करता है। प्रारूपण के दौरान, प्रोग्रामर को एक मोड चयन विकल्प प्रदान करके, एकल अहस्ताक्षरित अनंत के साथ प्रोजेक्टिवली विस्तारित वास्तविक संख्या प्रणाली को शामिल करने के लिए मानक का प्रस्ताव था। हालाँकि, अंतिम मानक की जटिलता को कम करने के हित में, प्रोजेक्टिव मोड को हटा दिया गया था। Intel 8087 और [[Intel 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>
आईईईई मानक अलग-अलग सकारात्मक और नकारात्मक अनन्तताओं के साथ, पूर्ण रूप से विस्तारित वास्तविक संख्या प्रणाली को नियोजित (और विस्तारित) करता है। प्रारूपण के दौरान, प्रोग्रामर को मोड चयन विकल्प प्रदान करके, अहस्ताक्षरित अनंत के साथ प्रोजेक्टिवली विस्तारित वास्तविक संख्या प्रणाली को शामिल करने के लिए मानक का प्रस्ताव था। हालाँकि, अंतिम मानक की जटिलता को कम करने के हित में, प्रोजेक्टिव मोड को हटा दिया गया था। Intel 8087 और [[Intel 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 386: Line 383:


===अनुशंसित कार्य और विधेय===
===अनुशंसित कार्य और विधेय===
* <code>copysign(x,y)</code> y के चिह्न के साथ x लौटाता है, इसलिए <code>abs(x)</code> के बराबर होती है <code>copysign(x,1.0)</code>. यह उन कुछ ऑपरेशनों में से एक है जो अंकगणित के समान NaN पर संचालित होता है। कार्यक्रम <code>copysign</code> C99 मानक में नया है.
* <code>copysign(x,y)</code> y के चिह्न के साथ x लौटाता है, इसलिए <code>abs(x)</code> के बराबर होती है <code>copysign(x,1.0)</code>. यह उन कुछ ऑपरेशनों में से है जो अंकगणित के समान NaN पर संचालित होता है। कार्यक्रम <code>copysign</code> C99 मानक में नया है.
* −x, उल्टे चिह्न के साथ x लौटाता है। यह कुछ मामलों में 0−x से भिन्न है, विशेष रूप से जब x 0 है। तो −(0) −0 है, लेकिन 0−0 का चिह्न पूर्णांकन मोड पर निर्भर करता है।
* −x, उल्टे चिह्न के साथ x लौटाता है। यह कुछ मामलों में 0−x से भिन्न है, विशेष रूप से जब x 0 है। तो −(0) −0 है, लेकिन 0−0 का चिह्न पूर्णांकन मोड पर निर्भर करता है।
* <code>scalb(y, N)</code>
* <code>scalb(y, N)</code>
* <code>logb(x)</code>
* <code>logb(x)</code>
* <code>finite(x)</code> x के लिए एक [[विधेय (गणित)]] एक परिमित मान है, जो −Inf < x < Inf के बराबर है
* <code>finite(x)</code> x के लिए [[विधेय (गणित)]] परिमित मान है, जो −Inf < x < Inf के बराबर है
* <code>isnan(x)</code> x के लिए एक विधेय एक NaN है, जो x ≠ x के बराबर है
* <code>isnan(x)</code> x के लिए विधेय NaN है, जो x ≠ x के बराबर है
* <code>x <> y</code>, जिसका व्यवहार NaN के कारण NOT(x = y) से भिन्न होता है।
* <code>x <> y</code>, जिसका व्यवहार NaN के कारण NOT(x = y) से भिन्न होता है।
* <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 की दिशा में अगला प्रतिनिधित्व योग्य मान लौटाता है


=={{anchor|P754}}इतिहास==
==इतिहास==
1976 में, [[इंटेल]] एक फ्लोटिंग-पॉइंट [[ सह प्रोसेसर ]] का विकास शुरू कर रहा था।<ref name="Intel_2016_Case"/><ref name="Kahan_1998_Story"/>इंटेल को उम्मीद थी कि वह व्यापक रूप से भिन्न गणित सॉफ्टवेयर लाइब्रेरी में पाए जाने वाले सभी ऑपरेशनों के अच्छे कार्यान्वयन वाली एक चिप बेचने में सक्षम होगी।<ref name="Intel_2016_Case"/><ref name="Woehr_1997_Kahan"/>
1976 में, [[इंटेल]] फ्लोटिंग-पॉइंट [[ सह प्रोसेसर ]] का विकास शुरू कर रहा था।<ref name="Intel_2016_Case"/><ref name="Kahan_1998_Story"/>इंटेल को उम्मीद थी कि वह व्यापक रूप से भिन्न गणित सॉफ्टवेयर लाइब्रेरी में पाए जाने वाले सभी ऑपरेशनों के अच्छे कार्यान्वयन वाली चिप बेचने में सक्षम होगी।<ref name="Intel_2016_Case"/><ref name="Woehr_1997_Kahan"/>


जॉन पामर, जिन्होंने इस परियोजना का प्रबंधन किया था, का मानना ​​था कि इस प्रयास को अलग-अलग प्रोसेसरों में एक मानक एकीकृत फ़्लोटिंग पॉइंट संचालन द्वारा समर्थित किया जाना चाहिए। उन्होंने [[कैलिफोर्निया विश्वविद्यालय]] के [[विलियम कहाँ]] से संपर्क किया, जिन्होंने [[ हेवलेट पैकर्ड ]] के कैलकुलेटर की सटीकता में सुधार करने में मदद की थी। कहन ने सुझाव दिया कि इंटेल [[ डिजिटल उपकरण निगम ]] (DEC) VAX के फ्लोटिंग पॉइंट का उपयोग करे। पहला VAX, VAX-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}} लेकिन कोप्रोसेसर का हार्डवेयर डिज़ाइन उस परिवर्तन को करने के लिए बहुत दूर था।
जॉन पामर, जिन्होंने इस परियोजना का प्रबंधन किया था, का मानना ​​था कि इस प्रयास को अलग-अलग प्रोसेसरों में मानक ीकृत फ़्लोटिंग पॉइंट संचालन द्वारा समर्थित किया जाना चाहिए। उन्होंने [[कैलिफोर्निया विश्वविद्यालय]] के [[विलियम कहाँ]] से संपर्क किया, जिन्होंने [[ हेवलेट पैकर्ड ]] के कैलकुलेटर की सटीकता में सुधार करने में मदद की थी। कहन ने सुझाव दिया कि इंटेल [[ डिजिटल उपकरण निगम ]] (DEC) VAX के फ्लोटिंग पॉइंट का उपयोग करे। पहला VAX, VAX-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 मानक कार्य समूह की बैठक में भाग लिया। बाद में उन्हें इंटेल से उनके कोप्रोसेसर के लिए उनके काम के आधार पर मसौदा प्रस्ताव पेश करने की अनुमति मिली; उन्हें प्रारूप के विवरण और उसके औचित्य को समझाने की अनुमति दी गई थी, लेकिन इंटेल के कार्यान्वयन वास्तुकला से संबंधित कुछ भी नहीं। मसौदा जेरोम कूनन और हेरोल्ड एस. स्टोन के साथ सह-लिखा गया था, और शुरू में इसे काहन-कूनन-स्टोन प्रस्ताव या के-सी-एस प्रारूप के रूप में जाना जाता था।<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 में घोषित किया गया था, ड्राफ्ट मानक को लागू करने वाली पहली चिप थी।
Line 410: Line 407:
[[File:Intel C8087.jpg|thumb|left|इंटेल 8087 फ्लोटिंग-पॉइंट कोप्रोसेसर]]1980 में, Intel 8087 चिप पहले ही रिलीज़ हो चुकी थी,<ref name="Olympus_MIC-D"/>लेकिन प्रदर्शन संबंधी चिंताओं के कारण डीईसी विशेष रूप से असामान्य संख्याओं का विरोध करता रहा और चूंकि इससे डीईसी को डीईसी के प्रारूप पर मानकीकरण करने के लिए प्रतिस्पर्धात्मक लाभ मिलेगा।
[[File:Intel C8087.jpg|thumb|left|इंटेल 8087 फ्लोटिंग-पॉइंट कोप्रोसेसर]]1980 में, Intel 8087 चिप पहले ही रिलीज़ हो चुकी थी,<ref name="Olympus_MIC-D"/>लेकिन प्रदर्शन संबंधी चिंताओं के कारण डीईसी विशेष रूप से असामान्य संख्याओं का विरोध करता रहा और चूंकि इससे डीईसी को डीईसी के प्रारूप पर मानकीकरण करने के लिए प्रतिस्पर्धात्मक लाभ मिलेगा।


धीरे-धीरे कम प्रवाह पर बहस 1981 तक चली जब डिजिटल उपकरण निगम द्वारा इसका आकलन करने के लिए नियुक्त एक विशेषज्ञ ने असंतुष्टों का पक्ष लिया। डीईसी ने यह प्रदर्शित करने के लिए अध्ययन करवाया था कि क्रमिक अंडरफ़्लो एक बुरा विचार था, लेकिन अध्ययन का निष्कर्ष विपरीत था, और डीईसी ने हार मान ली। 1985 में, मानक की पुष्टि की गई थी, लेकिन यह एक साल पहले ही वास्तविक मानक बन गया था, कई निर्माताओं द्वारा कार्यान्वित किया गया।<ref name="Kahan_1998_Story"/><ref name="Chuck_Kahan_Interview"/><ref name="Kahan"/>
धीरे-धीरे कम प्रवाह पर बहस 1981 तक चली जब डिजिटल उपकरण निगम द्वारा इसका आकलन करने के लिए नियुक्त विशेषज्ञ ने असंतुष्टों का पक्ष लिया। डीईसी ने यह प्रदर्शित करने के लिए अध्ययन करवाया था कि क्रमिक अंडरफ़्लो बुरा विचार था, लेकिन अध्ययन का निष्कर्ष विपरीत था, और डीईसी ने हार मान ली। 1985 में, मानक की पुष्टि की गई थी, लेकिन यह साल पहले ही वास्तविक मानक बन गया था, कई निर्माताओं द्वारा कार्यान्वित किया गया।<ref name="Kahan_1998_Story"/><ref name="Chuck_Kahan_Interview"/><ref name="Kahan"/>
{{clear}}
 
==यह भी देखें==
==यह भी देखें==
*[[आईईईई 754]]
*[[आईईईई 754]]
Line 421: Line 416:
{{notelist}}
{{notelist}}


 
== संदर्भ ==
==संदर्भ==
{{reflist|refs=
{{reflist|refs=
<ref name="Intel_2016_Case">{{cite web |title=Intel and Floating-Point - Updating One of the Industry's Most Successful Standards - The Technology Vision for the Floating-Point Standard |date=2016 |publisher=[[Intel]] |url=http://www.intel.com/content/dam/www/public/us/en/documents/case-studies/floating-point-case-study.pdf |access-date=2016-05-30 |url-status=dead |archive-url=https://web.archive.org/web/20160304114859/http://www.intel.com/content/dam/www/public/us/en/documents/case-studies/floating-point-case-study.pdf |archive-date=2016-03-04}} (11 pages)</ref>
<ref name="Intel_2016_Case">{{cite web |title=Intel and Floating-Point - Updating One of the Industry's Most Successful Standards - The Technology Vision for the Floating-Point Standard |date=2016 |publisher=[[Intel]] |url=http://www.intel.com/content/dam/www/public/us/en/documents/case-studies/floating-point-case-study.pdf |access-date=2016-05-30 |url-status=dead |archive-url=https://web.archive.org/web/20160304114859/http://www.intel.com/content/dam/www/public/us/en/documents/case-studies/floating-point-case-study.pdf |archive-date=2016-03-04}} (11 pages)</ref>

Revision as of 13:54, 12 August 2023

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

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

Level Width Range at full precision Precision[lower-alpha 1]
Single precision 32 bits ±1.18×10−38 to ±3.4×1038 Approximately 7 decimal digits
Double precision 64 bits ±2.23×10−308 to ±1.80×10308 Approximately 16 decimal digits

मानक सकारात्मक और नकारात्मक अनंत के लिए प्रतिनिधित्व को भी परिभाषित करता है, नकारात्मक शून्य, शून्य से विभाजन जैसे अमान्य परिणामों को संभालने के लिए पांच अपवाद, उन अपवादों का प्रतिनिधित्व करने के लिए NaN नामक विशेष मान, ऊपर दिखाए गए से छोटी संख्याओं का प्रतिनिधित्व करने के लिए असामान्य संख्याएं, और चार गोल मोड।

संख्याओं का प्रतिनिधित्व

संख्या 0.15625 को ल-सटीक IEEE 754-1985 फ़्लोटिंग-पॉइंट संख्या के रूप में दर्शाया गया है। स्पष्टीकरण के लिए पाठ देखें.
64 बिट IEEE 754 में तीन फ़ील्ड फ़्लोट होते हैं

IEEE 754 प्रारूप में फ़्लोटिंग-पॉइंट नंबरों में तीन फ़ील्ड होते हैं: साइन बिट, घातांक पूर्वाग्रह और अंश। निम्नलिखित उदाहरण प्रत्येक का अर्थ बताता है।

दशमलव संख्या 0.1562510 बाइनरी में दर्शाया गया 0.00101 है2 (अर्थात् 1/8 + 1/32)। (अंकाक्षर संख्या मूलांक दर्शाते हैं।) वैज्ञानिक संकेतन के अनुरूप, जहां संख्याओं को दशमलव बिंदु के बाईं ओर गैर-शून्य अंक के रूप में लिखा जाता है, हम इस संख्या को फिर से लिखते हैं ताकि इसमें बाइनरी के बाईं ओर ल 1 बिट हो बिंदु । हम तीन स्थितियों द्वारा छोड़े गए बिट्स के स्थानांतरण की भरपाई के लिए बस 2 की उचित शक्ति से गुणा करते हैं:

अब हम भिन्न और घातांक को पढ़ सकते हैं: भिन्न .01 है2 और घातांक −3 है।

जैसा कि चित्रों में दिखाया गया है, IEEE 754 में इस संख्या का प्रतिनिधित्व करने वाले तीन फ़ील्ड हैं:

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

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

अग्रणी 1 बिट को हटा दिया गया है क्योंकि शून्य को छोड़कर सभी संख्याएँ अग्रणी 1 से शुरू होती हैं; अग्रणी 1 अंतर्निहित है और वास्तव में इसे संग्रहीत करने की आवश्यकता नहीं है जो मुफ़्त में अतिरिक्त परिशुद्धता देता है।

शून्य

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

हस्ताक्षरित शून्य के लिए चिह्न = 0, हस्ताक्षरित शून्य के लिए 1।
पक्षपाती घातांक = 0.
भिन्न = 0.

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

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

असामान्य संख्या को सभी 0 बिट्स के पक्षपाती घातांक के साथ दर्शाया जाता है, जो ल परिशुद्धता में −126 के घातांक का प्रतिनिधित्व करता है (−127 नहीं), या दोहरी परिशुद्धता में −1022 (−1023 नहीं) का प्रतिनिधित्व करता है।[3] इसके विपरीत, सामान्य संख्या का प्रतिनिधित्व करने वाला सबसे छोटा पक्षपाती घातांक 1 है (नीचे #उदाहरण देखें)।

गैर-संख्याओं का प्रतिनिधित्व

किसी गणना की अनंतता या अमान्य परिणाम को इंगित करने के लिए पक्षपाती-प्रतिपादक फ़ील्ड सभी 1 बिट्स से भरा हुआ है।

सकारात्मक और नकारात्मक अनंत

विस्तारित वास्तविक रेखा को इस प्रकार दर्शाया गया है:

सकारात्मक अनंत के लिए चिह्न = 0, नकारात्मक अनंत के लिए 1।
पक्षपाती प्रतिपादक = सभी 1 बिट्स।
अंश = सभी 0 बिट्स।

NaN

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

चिह्न = या तो 0 या 1.
पक्षपाती प्रतिपादक = सभी 1 बिट्स।
अंश = सभी 0 बिट्स को छोड़कर कुछ भी (क्योंकि सभी 0 बिट्स अनंत का प्रतिनिधित्व करते हैं)।

सीमा और परिशुद्धता

महत्वपूर्ण अंकों की निश्चित संख्या का उपयोग करके दशमलव प्रतिनिधित्व की तुलना में ल (बाइनरी 32) और डबल सटीक (बाइनरी 64) संख्याओं की सापेक्ष सटीकता। सापेक्ष परिशुद्धता को यहां ulp(x)/x के रूप में परिभाषित किया गया है, जहां ulp(x) x के प्रतिनिधित्व में अंतिम स्थान पर इकाई है, यानी x और अगले प्रतिनिधित्व योग्य संख्या के बीच का अंतर।

परिशुद्धता को दो क्रमिक मंटिसा अभ्यावेदन के बीच न्यूनतम अंतर के रूप में परिभाषित किया गया है; इस प्रकार यह केवल मंटिसा में कार्य है; जबकि अंतर को दो क्रमिक संख्याओं के बीच के अंतर के रूप में परिभाषित किया गया है।[4]

ल परिशुद्धता

ल-सटीक संख्याएँ 32 बिट्स पर कब्जा करती हैं। ल परिशुद्धता में:

  • शून्य के निकटतम सकारात्मक और नकारात्मक संख्याएं (घातक क्षेत्र में सभी 0 के साथ असामान्य मान और अंश क्षेत्र में बाइनरी मान 1 द्वारा दर्शायी जाती हैं) हैं
    ±2−23×2−126 ≈ ±1.40130×10−45
  • शून्य के निकटतम सकारात्मक और नकारात्मक सामान्यीकृत संख्याएं (घातक क्षेत्र में बाइनरी मान 1 और अंश क्षेत्र में 0 के साथ दर्शायी जाती हैं) हैं
    ±1 × 2−126 ≈ ±1.17549×10−38
  • शून्य से सबसे दूर की परिमित धनात्मक और परिमित ऋणात्मक संख्याएँ (घातक क्षेत्र में 254 और भिन्न क्षेत्र में सभी 1 के साथ मान द्वारा दर्शाई गई) हैं
    ±(2−2−23) × 2127[5] ≈ ±3.40282×1038

ल परिशुद्धता में दिए गए घातांक के लिए कुछ उदाहरण सीमा और अंतराल मान:

Actual Exponent (unbiased) Exp (biased) Minimum Maximum Gap
−1 126 0.5 ≈ 0.999999940395 ≈ 5.96046e-8
0 127 1 ≈ 1.999999880791 ≈ 1.19209e-7
1 128 2 ≈ 3.999999761581 ≈ 2.38419e-7
2 129 4 ≈ 7.999999523163 ≈ 4.76837e-7
10 137 1024 ≈ 2047.999877930 ≈ 1.22070e-4
11 138 2048 ≈ 4095.999755859 ≈ 2.44141e-4
23 150 8388608 16777215 1
24 151 16777216 33554430 2
127 254 ≈ 1.70141e38 ≈ 3.40282e38 ≈ 2.02824e31

उदाहरण के तौर पर, 16,777,217 को 32-बिट फ़्लोट के रूप में एन्कोड नहीं किया जा सकता क्योंकि इसे 16,777,216 पर पूर्णांकित किया जाएगा। इससे पता चलता है कि फ़्लोटिंग पॉइंट अंकगणित लेखांकन सॉफ़्टवेयर के लिए अनुपयुक्त क्यों है। हालाँकि, प्रतिनिधित्व योग्य सीमा के भीतर सभी पूर्णांक जो 2 की शक्ति हैं, उन्हें बिना गोलाई के 32-बिट फ़्लोट में संग्रहीत किया जा सकता है।

दोहरी परिशुद्धता

डबल-सटीक संख्याएँ 64 बिट्स पर कब्जा करती हैं। दोहरी परिशुद्धता में:

  • शून्य के निकटतम सकारात्मक और नकारात्मक संख्याएं (्सप फ़ील्ड में सभी 0 के साथ असामान्य मान और फ्रैक्शन फ़ील्ड में बाइनरी मान 1 द्वारा दर्शायी जाती हैं) हैं
    ±2−52×2−1022 ≈ ±4.94066×10−324
  • शून्य के निकटतम सकारात्मक और नकारात्मक सामान्यीकृत संख्याएं (्सप फ़ील्ड में बाइनरी मान 1 और अंश फ़ील्ड में 0 के साथ दर्शायी जाती हैं) हैं
    ±1 × 2−1022 ≈ ±2.22507×10−308
  • शून्य से सबसे दूर की परिमित धनात्मक और परिमित ऋणात्मक संख्याएँ (्सप फ़ील्ड में 2046 और भिन्न फ़ील्ड में सभी 1 के साथ मान द्वारा दर्शाई गई) हैं
    ±(2−2−52)×21023[5]≈ ±1.79769×10308

दोहरी परिशुद्धता में दिए गए घातांक के लिए कुछ उदाहरण सीमा और अंतराल मान:

Actual Exponent (unbiased) Exp (biased) Minimum Maximum Gap
−1 1022 0.5 ≈ 0.999999999999999888978 ≈ 1.11022e-16
0 1023 1 ≈ 1.999999999999999777955 ≈ 2.22045e-16
1 1024 2 ≈ 3.999999999999999555911 ≈ 4.44089e-16
2 1025 4 ≈ 7.999999999999999111822 ≈ 8.88178e-16
10 1033 1024 ≈ 2047.999999999999772626 ≈ 2.27374e-13
11 1034 2048 ≈ 4095.999999999999545253 ≈ 4.54747e-13
52 1075 4503599627370496 9007199254740991 1
53 1076 9007199254740992 18014398509481982 2
1023 2046 ≈ 8.98847e307 ≈ 1.79769e308 ≈ 1.99584e292

विस्तारित प्रारूप

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

उदाहरण

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

Type Sign Actual Exponent Exp (biased) Exponent field Fraction field Value
Zero 0 −126 0 0000 0000 000 0000 0000 0000 0000 0000 0.0
Negative zero 1 −126 0 0000 0000 000 0000 0000 0000 0000 0000 −0.0
One 0 0 127 0111 1111 000 0000 0000 0000 0000 0000 1.0
Minus One 1 0 127 0111 1111 000 0000 0000 0000 0000 0000 −1.0
Smallest denormalized number * −126 0 0000 0000 000 0000 0000 0000 0000 0001 ±2−23 × 2−126 = ±2−149 ≈ ±1.4×10−45
"Middle" denormalized number * −126 0 0000 0000 100 0000 0000 0000 0000 0000 ±2−1 × 2−126 = ±2−127 ≈ ±5.88×10−39
Largest denormalized number * −126 0 0000 0000 111 1111 1111 1111 1111 1111 ±(1−2−23) × 2−126 ≈ ±1.18×10−38
Smallest normalized number * −126 1 0000 0001 000 0000 0000 0000 0000 0000 ±2−126 ≈ ±1.18×10−38
Largest normalized number * 127 254 1111 1110 111 1111 1111 1111 1111 1111 ±(2−2−23) × 2127 ≈ ±3.4×1038
Positive infinity 0 128 255 1111 1111 000 0000 0000 0000 0000 0000 +∞
Negative infinity 1 128 255 1111 1111 000 0000 0000 0000 0000 0000 −∞
Not a number * 128 255 1111 1111 non zero NaN
* Sign bit can be either 0 or 1 .

फ़्लोटिंग-पॉइंट संख्याओं की तुलना करना

ऋणात्मक शून्य और धनात्मक शून्य के लिए बिट्स के दो संयोजनों को छोड़कर, प्रत्येक संभावित बिट संयोजन या तो NaN है या संबद्ध क्रम के साथ एफ़िनली विस्तारित वास्तविक संख्या प्रणाली में अद्वितीय मान वाला नंबर है, जिस पर कभी-कभी विशेष ध्यान देने की आवश्यकता होती है (नीचे देखें) . #Repretation_of_numbers में विशेष गुण है कि, NaN को छोड़कर, किसी भी दो संख्याओं की तुलना चिह्न और परिमाण पूर्णांक के रूप में की जा सकती है (endianness मुद्दे लागू होते हैं)। 2 के पूरक पूर्णांकों के रूप में तुलना करते समय: यदि साइन बिट भिन्न होते हैं, तो नकारात्मक संख्या सकारात्मक संख्या से पहले होती है, इसलिए 2 का पूरक सही परिणाम देता है (सिवाय इसके कि नकारात्मक शून्य और सकारात्मक शून्य को बराबर माना जाना चाहिए)। यदि दोनों मान सकारात्मक हैं, तो 2 की पूरक तुलना फिर से सही परिणाम देती है। अन्यथा (दो नकारात्मक संख्याएं), सही एफपी क्रम 2 के पूरक क्रम के विपरीत है।

फ़्लोटिंग पॉइंट गणनाओं में निहित राउंडिंग त्रुटियाँ परिणामों की सटीक समानता की जाँच के लिए तुलनाओं के उपयोग को सीमित कर सकती हैं। स्वीकार्य सीमा चुनना जटिल विषय है। अनुमानित तुलना करने के लिए तुलनात्मक ईपीएसलॉन मान का उपयोग करना सामान्य तकनीक है।[6] तुलनाएँ कितनी उदार हैं, इसके आधार पर सामान्य मूल्यों में शामिल हैं 1e-6 या 1e-5 ल परिशुद्धता के लिए, और 1e-14 दोहरी परिशुद्धता के लिए.[7][8] अन्य सामान्य तकनीक यूएलपी है, जो जांच करती है कि अंतिम स्थान के अंकों में क्या अंतर है, प्रभावी ढंग से जांचती है कि दोनों मान कितने कदम दूर हैं।[9] हालाँकि तुलनात्मक उद्देश्यों के लिए नकारात्मक शून्य और सकारात्मक शून्य को आम तौर पर समान माना जाता है, कुछ प्रोग्रामिंग भाषा रिलेशनल ऑपरेटर और समान निर्माण उन्हें अलग मानते हैं। जावा (प्रोग्रामिंग भाषा) भाषा विशिष्टता के अनुसार,[10] तुलना और समानता संचालक उन्हें समान मानते हैं, लेकिन Math.min() और Math.max() उन्हें अलग करें (आधिकारिक तौर पर जावा संस्करण 1.1 से शुरू करें लेकिन वास्तव में 1.1.1 से), जैसा कि तुलना विधियां करती हैं equals(), compareTo() और भी compare() कक्षाओं का Float और Double.

फ़्लोटिंग-पॉइंट संख्याओं को पूर्णांकित करना

आईईईई मानक में चार अलग-अलग राउंडिंग मोड हैं; पहला डिफ़ॉल्ट है; अन्य को निर्देशित गोलाई कहा जाता है।

  • 'राउंड टू नियरेस्ट' - निकटतम मान तक राउंड; यदि संख्या बीच में गिरती है तो इसे सम (शून्य) कम से कम महत्वपूर्ण बिट के साथ निकटतम मान तक पूर्णांकित किया जाता है, जिसका अर्थ है कि इसे 50% समय तक पूर्णांकित किया जाता है (IEEE 754-2008 में इस मोड को दूसरे दौर से अलग करने के लिए राउंडटीज़टूईवन कहा जाता है) -से-निकटतम मोड)
  • '0 की ओर गोल' - शून्य की ओर निर्देशित गोलाई
  • '+∞ की ओर गोल' - सकारात्मक अनंत की ओर निर्देशित गोलाई
  • '-∞ की ओर गोल' - नकारात्मक अनंत की ओर निर्देशित गोलाई।

वास्तविक संख्याओं का विस्तार

आईईईई मानक अलग-अलग सकारात्मक और नकारात्मक अनन्तताओं के साथ, पूर्ण रूप से विस्तारित वास्तविक संख्या प्रणाली को नियोजित (और विस्तारित) करता है। प्रारूपण के दौरान, प्रोग्रामर को मोड चयन विकल्प प्रदान करके, ल अहस्ताक्षरित अनंत के साथ प्रोजेक्टिवली विस्तारित वास्तविक संख्या प्रणाली को शामिल करने के लिए मानक का प्रस्ताव था। हालाँकि, अंतिम मानक की जटिलता को कम करने के हित में, प्रोजेक्टिव मोड को हटा दिया गया था। Intel 8087 और Intel 80287 फ़्लोटिंग पॉइंट सह-प्रोसेसर दोनों इस प्रोजेक्टिव मोड का समर्थन करते हैं।[11][12][13]

कार्य और विधेय

मानक संचालन

निम्नलिखित कार्य प्रदान किए जाने चाहिए:

  • अंकगणितीय संक्रियाएं|जोड़ें, घटाएं, गुणा करें, भाग करें
  • वर्गमूल
  • फ़्लोटिंग पॉइंट शेष. यह सामान्य मॉड्यूलो ऑपरेशन की तरह नहीं है, यह दो सकारात्मक संख्याओं के लिए नकारात्मक हो सकता है। यह का सटीक मान लौटाता है x–(round(x/y)·y).
  • पूर्णांक तक पूर्णांकन. अप्रत्यक्ष पूर्णांकन के लिए जब दो पूर्णांकों के बीच आधा हो तो सम पूर्णांक चुना जाता है।
  • तुलना संचालन. अधिक स्पष्ट परिणामों के अलावा, IEEE 754 परिभाषित करता है कि −∞ = −∞, +∞ = +∞ और x ≠NaN किसी भी x के लिए (सहित) NaN).

अनुशंसित कार्य और विधेय

  • copysign(x,y) y के चिह्न के साथ x लौटाता है, इसलिए abs(x) के बराबर होती है copysign(x,1.0). यह उन कुछ ऑपरेशनों में से है जो अंकगणित के समान NaN पर संचालित होता है। कार्यक्रम copysign C99 मानक में नया है.
  • −x, उल्टे चिह्न के साथ x लौटाता है। यह कुछ मामलों में 0−x से भिन्न है, विशेष रूप से जब x 0 है। तो −(0) −0 है, लेकिन 0−0 का चिह्न पूर्णांकन मोड पर निर्भर करता है।
  • scalb(y, N)
  • logb(x)
  • finite(x) x के लिए विधेय (गणित) परिमित मान है, जो −Inf < x < Inf के बराबर है
  • isnan(x) x के लिए विधेय NaN है, जो x ≠ x के बराबर है
  • x <> y, जिसका व्यवहार NaN के कारण NOT(x = y) से भिन्न होता है।
  • unordered(x, y) सत्य है जब x, y के साथ अव्यवस्थित है, अर्थात, x या y NaN है।
  • class(x)
  • nextafter(x,y) x से y की दिशा में अगला प्रतिनिधित्व योग्य मान लौटाता है

इतिहास

1976 में, इंटेल फ्लोटिंग-पॉइंट सह प्रोसेसर का विकास शुरू कर रहा था।[14][15]इंटेल को उम्मीद थी कि वह व्यापक रूप से भिन्न गणित सॉफ्टवेयर लाइब्रेरी में पाए जाने वाले सभी ऑपरेशनों के अच्छे कार्यान्वयन वाली चिप बेचने में सक्षम होगी।[14][16]

जॉन पामर, जिन्होंने इस परियोजना का प्रबंधन किया था, का मानना ​​था कि इस प्रयास को अलग-अलग प्रोसेसरों में मानक ीकृत फ़्लोटिंग पॉइंट संचालन द्वारा समर्थित किया जाना चाहिए। उन्होंने कैलिफोर्निया विश्वविद्यालय के विलियम कहाँ से संपर्क किया, जिन्होंने हेवलेट पैकर्ड के कैलकुलेटर की सटीकता में सुधार करने में मदद की थी। कहन ने सुझाव दिया कि इंटेल डिजिटल उपकरण निगम (DEC) VAX के फ्लोटिंग पॉइंट का उपयोग करे। पहला VAX, VAX-11/780 1977 के अंत में सामने आया था, और इसके फ्लोटिंग पॉइंट को अत्यधिक महत्व दिया गया था। हालाँकि, अपनी चिप को व्यापक संभव बाज़ार में बेचने की कोशिश में, इंटेल सबसे अच्छा फ़्लोटिंग पॉइंट चाहता था, और कहन ने विशिष्टताओं को तैयार किया।[14]कहन ने शुरू में सिफारिश की थी कि फ़्लोटिंग पॉइंट आधार दशमलव हो[17][unreliable source?] लेकिन कोप्रोसेसर का हार्डवेयर डिज़ाइन उस परिवर्तन को करने के लिए बहुत दूर था।

इंटेल के भीतर के काम ने अन्य विक्रेताओं को चिंतित कर दिया, जिन्होंने समान अवसर सुनिश्चित करने के लिए मानकीकरण प्रयास स्थापित किया। कहन ने नवंबर 1977 में आयोजित दूसरी आईईईई 754 मानक कार्य समूह की बैठक में भाग लिया। बाद में उन्हें इंटेल से उनके कोप्रोसेसर के लिए उनके काम के आधार पर मसौदा प्रस्ताव पेश करने की अनुमति मिली; उन्हें प्रारूप के विवरण और उसके औचित्य को समझाने की अनुमति दी गई थी, लेकिन इंटेल के कार्यान्वयन वास्तुकला से संबंधित कुछ भी नहीं। मसौदा जेरोम कूनन और हेरोल्ड एस. स्टोन के साथ सह-लिखा गया था, और शुरू में इसे काहन-कूनन-स्टोन प्रस्ताव या के-सी-एस प्रारूप के रूप में जाना जाता था।[14][15][16][18]

चूंकि 8-बिट प्रतिपादक दोहरे-परिशुद्धता संख्याओं के लिए वांछित कुछ परिचालनों के लिए पर्याप्त चौड़ा नहीं था, उदाहरण के लिए दो 32-बिट संख्याओं के उत्पाद को संग्रहीत करने के लिए,[19]कहन के प्रस्ताव और डीईसी के प्रति-प्रस्ताव दोनों में 11 बिट्स का उपयोग किया गया, जैसे कि 1965 से सीडीसी 6600 के समय-परीक्षणित सीडीसी 6600#60-बिट फ़्लोटिंग पॉइंट|60-बिट फ़्लोटिंग-पॉइंट प्रारूप।[15][18][20]कहन के प्रस्ताव में अनन्तताओं का भी प्रावधान किया गया है, जो विभाजन-दर-शून्य स्थितियों से निपटने में उपयोगी होते हैं; नॉट-ए-नंबर मान, जो अमान्य संचालन से निपटने में उपयोगी होते हैं; असामान्य संख्याएँ, जो अंडरफ्लो के कारण होने वाली समस्याओं को कम करने में मदद करती हैं;[18][21][22]और बेहतर संतुलित घातांक पूर्वाग्रह, जो किसी संख्या का व्युत्क्रम लेते समय अतिप्रवाह और अल्पप्रवाह से बचने में मदद कर सकता है।[23][24]

अनुमोदित होने से पहले ही, मसौदा मानक को कई निर्माताओं द्वारा लागू किया गया था।[25][26] इंटेल 8087, जिसे 1980 में घोषित किया गया था, ड्राफ्ट मानक को लागू करने वाली पहली चिप थी।

इंटेल 8087 फ्लोटिंग-पॉइंट कोप्रोसेसर

1980 में, Intel 8087 चिप पहले ही रिलीज़ हो चुकी थी,[27]लेकिन प्रदर्शन संबंधी चिंताओं के कारण डीईसी विशेष रूप से असामान्य संख्याओं का विरोध करता रहा और चूंकि इससे डीईसी को डीईसी के प्रारूप पर मानकीकरण करने के लिए प्रतिस्पर्धात्मक लाभ मिलेगा।

धीरे-धीरे कम प्रवाह पर बहस 1981 तक चली जब डिजिटल उपकरण निगम द्वारा इसका आकलन करने के लिए नियुक्त विशेषज्ञ ने असंतुष्टों का पक्ष लिया। डीईसी ने यह प्रदर्शित करने के लिए अध्ययन करवाया था कि क्रमिक अंडरफ़्लो बुरा विचार था, लेकिन अध्ययन का निष्कर्ष विपरीत था, और डीईसी ने हार मान ली। 1985 में, मानक की पुष्टि की गई थी, लेकिन यह साल पहले ही वास्तविक मानक बन गया था, कई निर्माताओं द्वारा कार्यान्वित किया गया।[15][18][5]

यह भी देखें

टिप्पणियाँ

  1. Precision: The number of decimal digits precision is calculated via number_of_mantissa_bits * Log10(2). Thus ~7.2 and ~15.9 for single and double precision respectively.

संदर्भ

  1. बाइनरी फ़्लोटिंग-पॉइंट अंकगणित के लिए आईईईई मानक. 1985. doi:10.1109/IEEESTD.1985.82928. ISBN 0-7381-1165-1.
  2. "ANSI/IEEE Std 754-2019". 754r.ucbtest.org. Retrieved 2019-08-06.
  3. Hennessy (2009). कंप्यूटर संगठन और डिज़ाइन. Morgan Kaufmann. p. 270. ISBN 9780123744937.
  4. Hossam A. H. Fahmy; Shlomo Waser; Michael J. Flynn, Computer Arithmetic (PDF), archived from the original (PDF) on 2010-10-08, retrieved 2011-01-02
  5. 5.0 5.1 5.2 William Kahan (October 1, 1997). "Lecture Notes on the Status of IEEE 754" (PDF). University of California, Berkeley. Retrieved 2007-04-12. {{cite journal}}: Cite journal requires |journal= (help)
  6. "Godot math_funcs.h". GitHub.com. 30 July 2022.
  7. "Godot math_defs.h". GitHub.com. 30 July 2022.
  8. "गोडोट MathfEx.cs". GitHub.com.
  9. "Comparing Floating Point Numbers, 2012 Edition". randomascii.wordpress.com. 26 February 2012.
  10. "जावा भाषा और वर्चुअल मशीन विशिष्टताएँ". Java Documentation.
  11. John R. Hauser (March 1996). "संख्यात्मक कार्यक्रमों में फ़्लोटिंग-पॉइंट अपवादों को संभालना" (PDF). ACM Transactions on Programming Languages and Systems. 18 (2): 139–174. doi:10.1145/227699.227701. S2CID 9820157.
  12. David Stevenson (March 1981). "IEEE Task P754: A proposed standard for binary floating-point arithmetic". IEEE Computer. 14 (3): 51–62. doi:10.1109/C-M.1981.220377. S2CID 15523399.
  13. William Kahan and John Palmer (1979). "प्रस्तावित फ़्लोटिंग-पॉइंट मानक पर". SIGNUM Newsletter. 14 (Special): 13–21. doi:10.1145/1057520.1057522. S2CID 16981715.
  14. 14.0 14.1 14.2 14.3 "Intel and Floating-Point - Updating One of the Industry's Most Successful Standards - The Technology Vision for the Floating-Point Standard" (PDF). Intel. 2016. Archived from the original (PDF) on 2016-03-04. Retrieved 2016-05-30. (11 pages)
  15. 15.0 15.1 15.2 15.3 "An Interview with the Old Man of Floating-Point". cs.berkeley.edu. 1998-02-20. Retrieved 2016-05-30.
  16. 16.0 16.1 Woehr, Jack, ed. (1997-11-01). "A Conversation with William Kahan". Dr. Dobb's. drdobbs.com. Retrieved 2016-05-30.
  17. W. Kahan 2003, pers. comm. to Mike Cowlishaw and others after an IEEE 754 meeting
  18. 18.0 18.1 18.2 18.3 "IEEE 754: An Interview with William Kahan" (PDF). dr-chuck.com. Retrieved 2016-06-02.
  19. "IEEE vs. Microsoft Binary Format; Rounding Issues (Complete)". Microsoft Support. Microsoft. 2006-11-21. Article ID KB35826, Q35826. Archived from the original on 2020-08-28. Retrieved 2010-02-24.
  20. Thornton, James E. (1970). Written at Advanced Design Laboratory, Control Data Corporation. Design of a Computer: The Control Data 6600 (PDF) (1 ed.). Glenview, Illinois, USA: Scott, Foresman and Company. LCCN 74-96462. Archived (PDF) from the original on 2020-08-28. Retrieved 2016-06-02. (1+13+181+2+2 pages)
  21. Kahan, William Morton. "Why do we need a floating-point arithmetic standard?" (PDF). cs.berkeley.edu. Retrieved 2016-06-02.
  22. Kahan, William Morton; Darcy, Joseph D. "How Java's Floating-Point Hurts Everyone Everywhere" (PDF). cs.berkeley.edu. Retrieved 2016-06-02.
  23. Turner, Peter R. (2013-12-21). Numerical Analysis and Parallel Processing: Lectures given at The Lancaster …. Springer. ISBN 978-3-66239812-8. Retrieved 2016-05-30.
  24. "Names for Standardized Floating-Point Formats" (PDF). cs.berkeley.edu. Retrieved 2016-06-02.
  25. Charles Severance (20 February 1998). "फ़्लोटिंग-प्वाइंट के बूढ़े आदमी के साथ एक साक्षात्कार".
  26. Charles Severance. "आईईईई फ़्लोटिंग-पॉइंट प्रारूप का इतिहास". Connexions. Archived from the original on 2009-11-20.
  27. "Molecular Expressions: Science, Optics & You - Olympus MIC-D: Integrated Circuit Gallery - Intel 8087 Math Coprocessor". micro.magnet.fsu.edu. Retrieved 2016-05-30.


अग्रिम पठन


बाहरी संबंध