आईईईई 754-1985: Difference between revisions
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| | {{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]] द्वारा प्रतिस्थापित किया गया था, और फिर 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|आईईईई 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 बाइनरी अंक प्रणाली में संख्याओं का प्रतिनिधित्व करता है, जो परिशुद्धता के चार स्तरों की परिभाषा प्रदान करता है, जिनमें से दो सबसे अधिक उपयोग किए जाते हैं: | ||
| Line 26: | Line 26: | ||
==संख्याओं का प्रतिनिधित्व== | ==संख्याओं का प्रतिनिधित्व== | ||
[[Image:IEEE 754 Single Floating Point Format.svg|right|frame|संख्या 0.15625 को ल- | [[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 बिट | [[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 में इस संख्या का प्रतिनिधित्व करने वाले तीन फ़ील्ड हैं: | ||
: चिन्ह = 0, क्योंकि संख्या धनात्मक है। (1 नकारात्मक दर्शाता है।) | : चिन्ह = 0, क्योंकि संख्या धनात्मक है। (1 नकारात्मक दर्शाता है।) | ||
| Line 40: | Line 40: | ||
: भिन्न = .01000…<sub>2</sub>. | : भिन्न = .01000…<sub>2</sub>. | ||
आईईईई 754 घातांक में [[ऑफसेट बाइनरी]] जोड़ता है ताकि कई मामलों में संख्याओं की तुलना उसी हार्डवेयर द्वारा आसानी से की जा सके जो हस्ताक्षरित 2-पूरक पूर्णांकों की तुलना करता है। पक्षपाती घातांक का उपयोग करते हुए, दो सकारात्मक फ़्लोटिंग-पॉइंट संख्याओं में से छोटी संख्या चिह्न और परिमाण पूर्णांक के समान क्रम के बाद बड़ी संख्या से कम निकलेगी। यदि दो फ़्लोटिंग-पॉइंट संख्याओं के अलग-अलग चिह्न हैं, तो चिह्न-और-परिमाण तुलना पक्षपातपूर्ण घातांक के साथ भी काम करती है। हालाँकि, यदि दोनों पक्षपाती-प्रतिपादक फ़्लोटिंग-पॉइंट संख्याएँ नकारात्मक हैं, तो क्रम को उलट दिया जाना चाहिए। यदि घातांक को, मान लीजिए, 2-पूरक संख्या के रूप में दर्शाया जाता है, तो यह देखने के लिए तुलना करना कि दो संख्याओं में से कौन सी बड़ी है, उतना सुविधाजनक नहीं होगा। | |||
अग्रणी 1 बिट को हटा दिया गया है क्योंकि शून्य को छोड़कर सभी संख्याएँ अग्रणी 1 से शुरू होती हैं; अग्रणी 1 अंतर्निहित है और वास्तव में इसे संग्रहीत करने की आवश्यकता नहीं है जो मुफ़्त में अतिरिक्त परिशुद्धता देता है। | अग्रणी 1 बिट को हटा दिया गया है क्योंकि शून्य को छोड़कर सभी संख्याएँ अग्रणी 1 से शुरू होती हैं; अग्रणी 1 अंतर्निहित है और वास्तव में इसे संग्रहीत करने की आवश्यकता नहीं है जो मुफ़्त में अतिरिक्त परिशुद्धता देता है। | ||
| Line 54: | Line 54: | ||
=== असामान्यीकृत संख्याएँ === | === असामान्यीकृत संख्याएँ === | ||
ऊपर वर्णित संख्या निरूपण को सामान्यीकृत कहा जाता है, जिसका अर्थ है कि अंतर्निहित अग्रणी बाइनरी अंक 1 है। अंकगणितीय अंडरफ्लो होने पर परिशुद्धता के नुकसान को कम करने के लिए, आईईईई 754 में सामान्यीकृत प्रतिनिधित्व में संभव से छोटे अंशों का प्रतिनिधित्व करने की क्षमता | ऊपर वर्णित संख्या निरूपण को सामान्यीकृत कहा जाता है, जिसका अर्थ है कि अंतर्निहित अग्रणी बाइनरी अंक 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 कहा जाता है, संख्या नहीं के लिए। | फ़्लोटिंग-पॉइंट अंकगणित#फ़्लोटिंग-पॉइंट ऑपरेशंस|फ़्लोटिंग-पॉइंट अंकगणित के कुछ ऑपरेशन अमान्य हैं, जैसे ऋणात्मक संख्या का वर्गमूल लेना। किसी अमान्य परिणाम तक पहुंचने की क्रिया को फ़्लोटिंग-पॉइंट अपवाद कहा जाता है। असाधारण परिणाम को विशेष कोड द्वारा दर्शाया जाता है जिसे NaN कहा जाता है, संख्या नहीं के लिए। आईईईई 754-1985 में सभी NaN का प्रारूप यह है: | ||
: चिह्न = या तो 0 या 1. | : चिह्न = या तो 0 या 1. | ||
| Line 79: | Line 79: | ||
== सीमा और परिशुद्धता == | == सीमा और परिशुद्धता == | ||
[[File:IEEE 754 relative precision.svg|thumb|महत्वपूर्ण अंकों की निश्चित संख्या का उपयोग करके दशमलव प्रतिनिधित्व की तुलना में ल (बाइनरी 32) और डबल | [[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 बिट्स पर कब्जा करती हैं। ल परिशुद्धता में: | ||
* शून्य के निकटतम सकारात्मक और नकारात्मक संख्याएं (घातक क्षेत्र में सभी 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 165: | Line 165: | ||
=== दोहरी परिशुद्धता === | === दोहरी परिशुद्धता === | ||
डबल- | डबल-त्रुटिहीन संख्याएँ 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}} | ||
| Line 240: | Line 240: | ||
'''विस्तारित प्रारूप''' | '''विस्तारित प्रारूप''' | ||
मानक राउंड-ऑफ त्रुटियों को कम करने के लिए, अंतिम परिणाम के लिए आवश्यक उच्च परिशुद्धता पर आंतरिक गणना करने के लिए विस्तारित प्रारूप (ओं) का उपयोग करने की भी सिफारिश करता है: मानक केवल ऐसे प्रारूपों के लिए न्यूनतम परिशुद्धता और घातांक आवश्यकताओं को निर्दिष्ट करता है। [[x87]] [[विस्तारित परिशुद्धता]] | 80-बिट विस्तारित प्रारूप सबसे | मानक राउंड-ऑफ त्रुटियों को कम करने के लिए, अंतिम परिणाम के लिए आवश्यक उच्च परिशुद्धता पर आंतरिक गणना करने के लिए विस्तारित प्रारूप (ओं) का उपयोग करने की भी सिफारिश करता है: मानक केवल ऐसे प्रारूपों के लिए न्यूनतम परिशुद्धता और घातांक आवश्यकताओं को निर्दिष्ट करता है। [[x87]] [[विस्तारित परिशुद्धता]] | 80-बिट विस्तारित प्रारूप सबसे सामान्यतः लागू किया जाने वाला विस्तारित प्रारूप है जो इन आवश्यकताओं को पूरा करता है। | ||
== उदाहरण == | == उदाहरण == | ||
यहां ल- | यहां ल-त्रुटिहीन आईईईई 754 अभ्यावेदन के कुछ उदाहरण दिए गए हैं: | ||
{| class="wikitable" | {| class="wikitable" | ||
| 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=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>. | ||
==फ़्लोटिंग-पॉइंट संख्याओं को पूर्णांकित करना== | ==फ़्लोटिंग-पॉइंट संख्याओं को पूर्णांकित करना== | ||
आईईईई मानक में चार अलग-अलग राउंडिंग मोड हैं; पहला डिफ़ॉल्ट है; अन्य को [[निर्देशित गोलाई]] कहा जाता है। | आईईईई मानक में चार अलग-अलग राउंडिंग मोड हैं; पहला डिफ़ॉल्ट है; अन्य को [[निर्देशित गोलाई]] कहा जाता है। | ||
* 'राउंड टू नियरेस्ट' - निकटतम मान तक राउंड; यदि संख्या बीच में गिरती है तो इसे सम (शून्य) कम से कम महत्वपूर्ण बिट के साथ निकटतम मान तक पूर्णांकित किया जाता है, जिसका अर्थ है कि इसे 50% समय तक पूर्णांकित किया जाता है ( | * 'राउंड टू नियरेस्ट' - निकटतम मान तक राउंड; यदि संख्या बीच में गिरती है तो इसे सम (शून्य) कम से कम महत्वपूर्ण बिट के साथ निकटतम मान तक पूर्णांकित किया जाता है, जिसका अर्थ है कि इसे 50% समय तक पूर्णांकित किया जाता है (आईईईई 754-2008 में इस मोड को दूसरे दौर से अलग करने के लिए राउंडटीज़टूईवन कहा जाता है) -से-निकटतम मोड) | ||
* '0 की ओर गोल' - शून्य की ओर निर्देशित गोलाई | * '0 की ओर गोल' - शून्य की ओर निर्देशित गोलाई | ||
* '+∞ की ओर गोल' - सकारात्मक अनंत की ओर निर्देशित गोलाई | * '+∞ की ओर गोल' - सकारात्मक अनंत की ओर निर्देशित गोलाई | ||
| Line 370: | 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> | ||
== कार्य और विधेय == | == कार्य और विधेय == | ||
| Line 378: | Line 378: | ||
*अंकगणितीय संक्रियाएं|जोड़ें, घटाएं, गुणा करें, भाग करें | *अंकगणितीय संक्रियाएं|जोड़ें, घटाएं, गुणा करें, भाग करें | ||
*[[वर्गमूल]] | *[[वर्गमूल]] | ||
*फ़्लोटिंग पॉइंट शेष. यह सामान्य [[मॉड्यूलो ऑपरेशन]] की तरह नहीं है, यह दो सकारात्मक संख्याओं के लिए नकारात्मक हो सकता है। यह का | *फ़्लोटिंग पॉइंट शेष. यह सामान्य [[मॉड्यूलो ऑपरेशन]] की तरह नहीं है, यह दो सकारात्मक संख्याओं के लिए नकारात्मक हो सकता है। यह का त्रुटिहीन मान लौटाता है {{math|x–(round(x/y)·y)}}. | ||
*[[पूर्णांक तक पूर्णांकन]]. अप्रत्यक्ष पूर्णांकन के लिए जब दो पूर्णांकों के बीच आधा हो तो सम पूर्णांक चुना जाता है। | *[[पूर्णांक तक पूर्णांकन]]. अप्रत्यक्ष पूर्णांकन के लिए जब दो पूर्णांकों के बीच आधा हो तो सम पूर्णांक चुना जाता है। | ||
*तुलना संचालन. अधिक स्पष्ट परिणामों के | *तुलना संचालन. अधिक स्पष्ट परिणामों के अतिरिक्त, आईईईई 754 परिभाषित करता है कि −∞ = −∞, +∞ = +∞ और <var>x</var> ≠<code>NaN</code> किसी भी <var>x</var> के लिए (सहित) <code>NaN</code>). | ||
===अनुशंसित कार्य और विधेय=== | ===अनुशंसित कार्य और विधेय=== | ||
| Line 397: | Line 397: | ||
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}} लेकिन कोप्रोसेसर का हार्डवेयर डिज़ाइन उस परिवर्तन को करने के लिए बहुत दूर था। | ||
इंटेल के भीतर के काम ने अन्य विक्रेताओं को चिंतित कर दिया, जिन्होंने समान अवसर सुनिश्चित करने के लिए मानकीकरण प्रयास स्थापित किया। कहन ने नवंबर 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"/> | ||
| Line 493: | Line 493: | ||
* [http://www.cygnus-software.com/papers/comparingfloats/Obsolete%20comparing%20floating%20point%20numbers.htm Comparing floats] | * [http://www.cygnus-software.com/papers/comparingfloats/Obsolete%20comparing%20floating%20point%20numbers.htm Comparing floats] | ||
* [https://web.archive.org/web/20070314154031/http://www.coprocessor.info/ Coprocessor.info: x87 FPU pictures, development and manufacturer information] | * [https://web.archive.org/web/20070314154031/http://www.coprocessor.info/ Coprocessor.info: x87 FPU pictures, development and manufacturer information] | ||
* [http://speleotrove.com/decimal/854mins.html | * [http://speleotrove.com/decimal/854mins.html आईईईई 854-1987] — History and minutes | ||
* [http://www.binaryconvert.com/convert_float.html IEEE754 (Single and Double precision) Online Converter] | * [http://www.binaryconvert.com/convert_float.html IEEE754 (Single and Double precision) Online Converter] | ||
Revision as of 15:39, 12 August 2023
आईईईई 754-1985[1] कंप्यूटर में तैरनेवाला स्थल नंबरों का प्रतिनिधित्व करने के लिए उद्योग तकनीकी मानक था, जिसे आधिकारिक तौर पर 1985 में अपनाया गया था और 2008 में आईईईई 754-2008 द्वारा प्रतिस्थापित किया गया था, और फिर 2019 में मामूली संशोधन आईईईई 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 नामक विशेष मान, ऊपर दिखाए गए से छोटी संख्याओं का प्रतिनिधित्व करने के लिए असामान्य संख्याएं, और चार गोल मोड।