आईईईई 754-1985: Difference between revisions
From Vigyanwiki
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
{{short description|First edition of the IEEE 754 floating-point standard}} | {{short description|First edition of the IEEE 754 floating-point standard}} | ||
{{See also|आईईईई 754}} | {{See also|आईईईई 754}} | ||
'''आईईईई 754-1985'''<ref>{{Cite book|title=बाइनरी फ़्लोटिंग-पॉइंट अंकगणित के लिए आईईईई मानक|year=1985|doi=10.1109/IEEESTD.1985.82928|isbn=0-7381-1165-1}}</ref> [[कंप्यूटर]] में [[ तैरनेवाला स्थल |फ्लोटिंग-पॉइंट]] नंबरों का प्रतिनिधित्व करने के लिए उद्योग [[तकनीकी मानक|मानक]] था, जिसे सामान्यतः 1985 में स्वीकार किया गया था और 2008 में [[IEEE 754-2008|आईईईई 754-2008]] द्वारा प्रतिस्थापित किया गया था, और फिर 2019 में सामान्य संशोधन [[IEEE 754-2019|आईईईई 754-2019]] द्वारा प्रतिस्थापित किया गया था।<ref>{{Cite web|url=http://754r.ucbtest.org/background/|title=ANSI/IEEE Std 754-2019|website=754r.ucbtest.org|access-date=2019-08-06}}</ref> अपने 23 वर्षों के समय, यह फ़्लोटिंग-पॉइंट गणना के लिए सबसे व्यापक रूप से उपयोग किया जाने वाला प्रारूप था। इसे सॉफ़्टवेयर में, फ़्लोटिंग-पॉइंट [[ पुस्तकालय (कंप्यूटिंग) |लाइब्रेरीज़]] के रूप में, और हार्डवेयर में, कई [[ CPU |सीपीयू]] और [[फ़्लोटिंग-पॉइंट इकाई|एफपीयू]] के [[निर्देश (कंप्यूटर विज्ञान)|निर्देशों]] में प्रस्तावित किया गया था। आईईईई 754-1985 बनने वाले ड्राफ्ट को प्रस्तावित करने वाला प्रथम एकीकृत सर्किट [[इंटेल 8087]] था। | '''आईईईई 754-1985'''<ref>{{Cite book|title=बाइनरी फ़्लोटिंग-पॉइंट अंकगणित के लिए आईईईई मानक|year=1985|doi=10.1109/IEEESTD.1985.82928|isbn=0-7381-1165-1}}</ref> [[कंप्यूटर]] में [[ तैरनेवाला स्थल |फ्लोटिंग-पॉइंट]] नंबरों का प्रतिनिधित्व करने के लिए उद्योग [[तकनीकी मानक|मानक]] था, जिसे सामान्यतः 1985 में स्वीकार किया गया था और 2008 में [[IEEE 754-2008|आईईईई 754-2008]] द्वारा प्रतिस्थापित किया गया था, और फिर 2019 में सामान्य संशोधन [[IEEE 754-2019|आईईईई 754-2019]] द्वारा प्रतिस्थापित किया गया था।<ref>{{Cite web|url=http://754r.ucbtest.org/background/|title=ANSI/IEEE Std 754-2019|website=754r.ucbtest.org|access-date=2019-08-06}}</ref> अपने 23 वर्षों के समय में, यह फ़्लोटिंग-पॉइंट गणना के लिए सबसे व्यापक रूप से उपयोग किया जाने वाला प्रारूप था। इसे सॉफ़्टवेयर में, फ़्लोटिंग-पॉइंट [[ पुस्तकालय (कंप्यूटिंग) |लाइब्रेरीज़]] के रूप में, और हार्डवेयर में, कई [[ CPU |सीपीयू]] और [[फ़्लोटिंग-पॉइंट इकाई|एफपीयू]] के [[निर्देश (कंप्यूटर विज्ञान)|निर्देशों]] में प्रस्तावित किया गया था। आईईईई 754-1985 बनने वाले ड्राफ्ट को प्रस्तावित करने वाला प्रथम एकीकृत सर्किट [[इंटेल 8087]] था। | ||
आईईईई 754-1985 बाइनरी में संख्याओं का प्रतिनिधित्व करता है, जो त्रुटिहीनता के चार स्तरों की परिभाषा प्रदान करता है, जिनमें से दो सबसे अधिक उपयोग किए जाते हैं: | आईईईई 754-1985 बाइनरी में संख्याओं का प्रतिनिधित्व करता है, जो त्रुटिहीनता के चार स्तरों की परिभाषा प्रदान करता है, जिनमें से दो सबसे अधिक उपयोग किए जाते हैं: | ||
| Line 22: | Line 22: | ||
|लगभग 16 दशमलव अंक | |लगभग 16 दशमलव अंक | ||
|} | |} | ||
मानक धनात्मक और ऋणात्मक अनंत के लिए प्रतिनिधित्व को भी परिभाषित करता है, [[नकारात्मक शून्य|ऋणात्मक शून्य]], [[शून्य से विभाजन]] जैसे अमान्य परिणामों को | मानक धनात्मक और ऋणात्मक अनंत के लिए प्रतिनिधित्व को भी परिभाषित करता है, [[नकारात्मक शून्य|ऋणात्मक शून्य]], [[शून्य से विभाजन]] जैसे अमान्य परिणामों को सुरक्षित करने के लिए पांच अपवाद, उन अपवादों का प्रतिनिधित्व करने के लिए विशेष मान जिन्हें [[NaN]] कहा जाता है, ऊपर दिखाए गए छोटी संख्याओं का प्रतिनिधित्व करने के लिए [[असामान्य संख्या|असामान्य संख्याएं]], और चार गोल मोड है। | ||
==संख्याओं का प्रतिनिधित्व== | ==संख्याओं का प्रतिनिधित्व== | ||
| Line 29: | Line 29: | ||
[[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) | दशमलव संख्या 0.15625<sub>10</sub> बाइनरी में 0.00101<sub>2</sub> (अर्थात् 1/8 + 1/32) प्रदर्शित किया गया है। (अंकाक्षर संख्या [[मूलांक]] प्रदर्शित करते हैं।) [[वैज्ञानिक संकेतन]] के अनुरूप, जहां संख्याओं को दशमलव बिंदु के बाईं ओर अन्य-शून्य अंक के रूप में लिखा जाता है, हम इस संख्या को पुनः लिखते हैं जिससे कि इसमें बाइनरी बिंदु के बाईं ओर एकल 1 बिट होता है। हम तीन स्थितियों द्वारा त्यागे गए बिट्स के स्थानांतरण की पूर्ति के लिए 2 की उचित शक्ति से गुणा करते हैं: | ||
: <math>0.00101_2 = 1.01_2 \times 2^{-3}</math> | : <math>0.00101_2 = 1.01_2 \times 2^{-3}</math> | ||
अब हम भिन्न और घातांक को पढ़ सकते हैं: भिन्न .01<sub>2</sub> है और घातांक −3 है। | अब हम भिन्न और घातांक को पढ़ सकते हैं: भिन्न .01<sub>2</sub> है और घातांक −3 है। | ||
जैसा कि चित्रों में | जैसा कि चित्रों में प्रदर्शित किया गया है, आईईईई 754 में इस संख्या का प्रतिनिधित्व करने वाले तीन क्षेत्र हैं: | ||
: चिन्ह = 0, क्योंकि संख्या धनात्मक है (1 ऋणात्मक | : चिन्ह = 0, क्योंकि संख्या धनात्मक है (1 ऋणात्मक प्रदर्शित करता है।)। | ||
: बायस्ड घातांक = −3 + बायस है। 'एकल त्रुटिहीनता' में, बायस '127' है, इसलिए इस उदाहरण में बायस्ड घातांक 124 है; 'डबल प्रिसिजन' में, बायस '1023' है, इसलिए इस उदाहरण में बायस्ड घातांक 1020 है। | : बायस्ड घातांक = −3 + बायस है। 'एकल त्रुटिहीनता' में, बायस '127' है, इसलिए इस उदाहरण में बायस्ड घातांक 124 है; 'डबल प्रिसिजन' में, बायस '1023' है, इसलिए इस उदाहरण में बायस्ड घातांक 1020 है। | ||
: अपूर्णांक = .01000…<sub>2</sub>. | : अपूर्णांक = .01000…<sub>2</sub>. | ||
आईईईई 754 घातांक में [[ऑफसेट बाइनरी]] जोड़ता है जिससे कि कई स्थितियों में संख्याओं की | आईईईई 754 घातांक में [[ऑफसेट बाइनरी]] जोड़ता है जिससे कि कई स्थितियों में संख्याओं की अपेक्षा उसी हार्डवेयर द्वारा सरलता से की जा सके जो हस्ताक्षरित 2-पूरक पूर्णांकों की अपेक्षा करता है। बायस्ड घातांक का उपयोग करते हुए, दो धनात्मक फ़्लोटिंग-पॉइंट संख्याओं में से छोटी संख्या चिह्न और परिमाण पूर्णांक के समान क्रम के पश्चात बड़ी संख्या से कम निकलती है। यदि दो फ़्लोटिंग-पॉइंट संख्याओं के भिन्न-भिन्न चिह्न हैं, तो चिह्न-और-परिमाण अपेक्षा बायस्ड घातांक के साथ भी कार्य करती है। चूँकि, यदि दोनों बायस्ड-घातांक फ़्लोटिंग-पॉइंट संख्याएँ ऋणात्मक हैं, तो क्रम को विपरीत कर दिया जाना चाहिए। यदि घातांक को, मान लीजिए, 2-पूरक संख्या के रूप में प्रदर्शित किया जाता है, तो यह देखने के लिए अपेक्षा करना कि दो संख्याओं में से कौन सी बड़ी है, सुविधाजनक नहीं होता है। | ||
अग्रणी 1 बिट को विस्थापित कर दिया गया है क्योंकि शून्य को | अग्रणी 1 बिट को विस्थापित कर दिया गया है क्योंकि शून्य को त्यागकर सभी संख्याएँ अग्रणी 1 से प्रारंभ होती हैं; अग्रणी 1 अंतर्निहित है और वास्तव में इसे संग्रहीत करने की आवश्यकता नहीं है जो मुफ़्त में अतिरिक्त त्रुटिहीनता प्रदान करता है। | ||
=== शून्य === | === शून्य === | ||
शून्य संख्या को विशेष रूप से | शून्य संख्या को विशेष रूप से प्रदर्शित किया गया है: | ||
: धनात्मक शून्य के लिए चिह्न = 0, ऋणात्मक शून्य के लिए 1 है। | : धनात्मक शून्य के लिए चिह्न = 0, ऋणात्मक शून्य के लिए 1 है। | ||
| Line 54: | Line 54: | ||
=== असामान्यीकृत संख्याएँ === | === असामान्यीकृत संख्याएँ === | ||
ऊपर वर्णित संख्या निरूपण को सामान्यीकृत कहा जाता है, जिसका अर्थ है कि अंतर्निहित अग्रणी बाइनरी अंक 1 है। अंडरफ्लो होने पर त्रुटिहीनता की हानि को कम करने के लिए, आईईईई 754 में सामान्यीकृत प्रतिनिधित्व में संभव से छोटे अंशों का प्रतिनिधित्व करने की क्षमता सम्मिलित है। अंतर्निहित अग्रणी अंक 0 बनाता है। ऐसी संख्याओं को असामान्य संख्याएँ कहा जाता है। उनमें सामान्यीकृत संख्या के रूप में कई [[महत्वपूर्ण अंक]] सम्मिलित नहीं होते हैं, किन्तु जब किसी ऑपरेशन का परिणाम शून्य नहीं होता है, किन्तु सामान्यीकृत संख्या द्वारा | ऊपर वर्णित संख्या निरूपण को सामान्यीकृत कहा जाता है, जिसका अर्थ है कि अंतर्निहित अग्रणी बाइनरी अंक 1 है। अंडरफ्लो होने पर त्रुटिहीनता की हानि को कम करने के लिए, आईईईई 754 में सामान्यीकृत प्रतिनिधित्व में संभव से छोटे अंशों का प्रतिनिधित्व करने की क्षमता सम्मिलित है। अंतर्निहित अग्रणी अंक 0 बनाता है। ऐसी संख्याओं को असामान्य संख्याएँ कहा जाता है। उनमें सामान्यीकृत संख्या के रूप में कई [[महत्वपूर्ण अंक]] सम्मिलित नहीं होते हैं, किन्तु जब किसी ऑपरेशन का परिणाम शून्य नहीं होता है, किन्तु सामान्यीकृत संख्या द्वारा प्रदर्शित किये जाने के लिए शून्य के अधिक निकट होता है, तो वे त्रुटिहीनता की क्रमिक हानि को सक्षम करते हैं। | ||
असामान्य संख्या को सभी 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 है (नीचे उदाहरण देखें)। | ||
==गैर-संख्याओं का प्रतिनिधित्व == | ==गैर-संख्याओं का प्रतिनिधित्व == | ||
| Line 64: | Line 64: | ||
=== धनात्मक और ऋणात्मक अनंत === | === धनात्मक और ऋणात्मक अनंत === | ||
[[विस्तारित वास्तविक रेखा|धनात्मक और ऋणात्मक अनंत]] को इस प्रकार | [[विस्तारित वास्तविक रेखा|धनात्मक और ऋणात्मक अनंत]] को इस प्रकार प्रदर्शित किया गया है: | ||
: धनात्मक अनंत के लिए चिह्न = 0, ऋणात्मक अनंत के लिए 1 है। | : धनात्मक अनंत के लिए चिह्न = 0, ऋणात्मक अनंत के लिए 1 है। | ||
| Line 72: | Line 72: | ||
=== NaN === | === NaN === | ||
फ़्लोटिंग-पॉइंट अंकगणित के कुछ ऑपरेशन अमान्य हैं, जैसे ऋणात्मक संख्या का वर्गमूल लेता है। किसी अमान्य परिणाम तक पहुंचने की क्रिया को फ़्लोटिंग-पॉइंट अपवाद कहा जाता है। असाधारण परिणाम को "नॉट ए नंबर" के लिए NaN नामक विशेष कोड द्वारा | फ़्लोटिंग-पॉइंट अंकगणित के कुछ ऑपरेशन अमान्य हैं, जैसे ऋणात्मक संख्या का वर्गमूल लेता है। किसी अमान्य परिणाम तक पहुंचने की क्रिया को फ़्लोटिंग-पॉइंट अपवाद कहा जाता है। असाधारण परिणाम को "नॉट ए नंबर" के लिए NaN नामक विशेष कोड द्वारा प्रदर्शित किया जाता है। आईईईई 754-1985 में सभी NaN का प्रारूप यह है: | ||
: चिह्न = या तो 0 या 1 होता है। | : चिह्न = या तो 0 या 1 होता है। | ||
: बायस्ड घातांक = सभी 1 बिट्स है। | : बायस्ड घातांक = सभी 1 बिट्स है। | ||
: अपूर्णांक = सभी 0 बिट्स को | : अपूर्णांक = सभी 0 बिट्स को त्यागकर कुछ भी होता है (क्योंकि सभी 0 बिट्स अनंत का प्रतिनिधित्व करते हैं)। | ||
== श्रेणी और त्रुटिहीनता == | == श्रेणी और त्रुटिहीनता == | ||
[[File:IEEE 754 relative precision.svg|thumb|महत्वपूर्ण अंकों की निश्चित संख्या का उपयोग करके दशमलव प्रतिनिधित्व की | [[File:IEEE 754 relative precision.svg|thumb|महत्वपूर्ण अंकों की निश्चित संख्या का उपयोग करके दशमलव प्रतिनिधित्व की अपेक्षा में एकल (बाइनरी 32) और डबल त्रुटिहीन (बाइनरी 64) संख्याओं की सापेक्ष त्रुटिहीनता है। सापेक्ष त्रुटिहीनता को यहां ulp(x)/x के रूप में परिभाषित किया गया है, जहां ulp(x) x के प्रतिनिधित्व में [[अंतिम स्थान पर इकाई]] है, अर्थात x और अगले प्रतिनिधित्व योग्य संख्या के मध्य का अंतर है।]]त्रुटिहीनता को दो क्रमिक मंटिसा अभ्यावेदन के मध्य न्यूनतम अंतर के रूप में परिभाषित किया गया है; इस प्रकार यह केवल मंटिसा में फंक्शन है; जबकि अंतर को दो क्रमिक संख्याओं के मध्य के अंतर के रूप में परिभाषित किया गया है।<ref>{{citation |title=Computer Arithmetic |author1=Hossam A. H. Fahmy |author2=Shlomo Waser |author3=Michael J. Flynn |url=http://arith.stanford.edu/~hfahmy/webpages/arith_class/arith.pdf |access-date=2011-01-02 |url-status=dead |archive-url=https://web.archive.org/web/20101008203307/http://arith.stanford.edu/~hfahmy/webpages/arith_class/arith.pdf |archive-date=2010-10-08}}</ref> | ||
[[एकल परिशुद्धता|'''एकल त्रुटिहीनता''']] | [[एकल परिशुद्धता|'''एकल त्रुटिहीनता''']] | ||
एकल-त्रुटिहीन संख्याएँ 32 बिट्स पर व्याप्त हैं। एकल त्रुटिहीनता में: | एकल-त्रुटिहीन संख्याएँ 32 बिट्स पर व्याप्त हैं। एकल त्रुटिहीनता में: | ||
* शून्य के निकटतम धनात्मक और ऋणात्मक संख्याएं (घातक क्षेत्र में सभी 0 के साथ असामान्य मान और अपूर्णांक क्षेत्र में बाइनरी मान 1 द्वारा | * शून्य के निकटतम धनात्मक और ऋणात्मक संख्याएं (घातक क्षेत्र में सभी 0 के साथ असामान्य मान और अपूर्णांक क्षेत्र में बाइनरी मान 1 द्वारा प्रदर्शित की जाती हैं) हैं: | ||
*: ±2<sup>−23</sup>×2<sup>−126</sup> ≈ ±1.40130{{e|−45}} | *: ±2<sup>−23</sup>×2<sup>−126</sup> ≈ ±1.40130{{e|−45}} | ||
* शून्य के निकटतम धनात्मक और ऋणात्मक सामान्यीकृत संख्याएं (घातक क्षेत्र में बाइनरी मान 1 और अपूर्णांक क्षेत्र में 0 के साथ | * शून्य के निकटतम धनात्मक और ऋणात्मक सामान्यीकृत संख्याएं (घातक क्षेत्र में बाइनरी मान 1 और अपूर्णांक क्षेत्र में 0 के साथ प्रदर्शित की जाती हैं) हैं: | ||
*: ±1 × 2<sup>−126</sup> ≈ ±1.17549{{e|−38}} | *: ±1 × 2<sup>−126</sup> ≈ ±1.17549{{e|−38}} | ||
* शून्य से सबसे दूर की परिमित धनात्मक और परिमित ऋणात्मक संख्याएँ (घातक क्षेत्र में 254 और अपूर्णांक क्षेत्र में सभी 1 के साथ मान द्वारा | * शून्य से सबसे दूर की परिमित धनात्मक और परिमित ऋणात्मक संख्याएँ (घातक क्षेत्र में 254 और अपूर्णांक क्षेत्र में सभी 1 के साथ मान द्वारा प्रदर्शित की गई) हैं: | ||
*: ±(2−2<sup>−23</sup>) × 2<sup>127</sup><ref name="Kahan">{{Cite document | *: ±(2−2<sup>−23</sup>) × 2<sup>127</sup><ref name="Kahan">{{Cite document | ||
| author = William Kahan |author-link=William Kahan | | author = William Kahan |author-link=William Kahan | ||
| Line 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 355: | Line 355: | ||
|} | |} | ||
== फ़्लोटिंग-पॉइंट संख्याओं की | == फ़्लोटिंग-पॉइंट संख्याओं की अपेक्षा करना == | ||
ऋणात्मक शून्य और धनात्मक शून्य के लिए बिट्स के दो संयोजनों को त्यागकर, प्रत्येक संभावित बिट संयोजन या तो NaN है या संबद्ध क्रम के साथ एफ़िनली विस्तारित वास्तविक संख्या प्रणाली में अद्वितीय मान वाला नंबर है, जिस पर कभी-कभी विशेष ध्यान देने की आवश्यकता होती है (नीचे देखें)। बाइनरी प्रतिनिधित्व में विशेष गुण होता है कि, NaN को त्यागकर, किसी भी दो संख्याओं की | ऋणात्मक शून्य और धनात्मक शून्य के लिए बिट्स के दो संयोजनों को त्यागकर, प्रत्येक संभावित बिट संयोजन या तो NaN है या संबद्ध क्रम के साथ एफ़िनली विस्तारित वास्तविक संख्या प्रणाली में अद्वितीय मान वाला नंबर है, जिस पर कभी-कभी विशेष ध्यान देने की आवश्यकता होती है (नीचे देखें)। बाइनरी प्रतिनिधित्व में विशेष गुण होता है कि, NaN को त्यागकर, किसी भी दो संख्याओं की अपेक्षा चिह्न और परिमाण पूर्णांक के रूप में की जा सकती है ([[endianness|एंडियननेस]] उद्देश्य प्रस्तावित होते हैं)। 2 के पूरक पूर्णांकों के रूप में अपेक्षा करते समय: यदि साइन बिट भिन्न होते हैं, तो ऋणात्मक संख्या धनात्मक संख्या से पूर्व होती है, इसलिए 2 का पूरक सही परिणाम देता है (इसके अतिरिक्त कि ऋणात्मक शून्य और धनात्मक शून्य को समान माना जाना चाहिए)। यदि दोनों मान धनात्मक हैं, तो 2 की पूरक अपेक्षा पुनः उचित परिणाम देती है। अन्यथा (दो ऋणात्मक संख्याएं), उचित एफपी क्रम 2 के पूरक क्रम के विपरीत है। | ||
फ़्लोटिंग पॉइंट गणनाओं में निहित राउंडिंग त्रुटियाँ परिणामों की त्रुटिहीन समानता के परीक्षण के लिए | फ़्लोटिंग पॉइंट गणनाओं में निहित राउंडिंग त्रुटियाँ परिणामों की त्रुटिहीन समानता के परीक्षण के लिए अपेक्षाओं के उपयोग को सीमित कर सकती हैं। स्वीकार्य सीमा का चयन करना समष्टि विषय है। सामान्य तकनीक अनुमानित अपेक्षा करने के लिए अपेक्षात्मक ईपीएसलॉन मान का उपयोग करना है।<ref>{{cite web|url=https://github.com/godotengine/godot/blob/master/core/math/math_funcs.h#L302|title=Godot math_funcs.h|website=GitHub.com|date=30 July 2022 }}</ref> अपेक्षाएँ कितनी उदार हैं, इस पर निर्भर करते हुए, सामान्य मूल्यों में एकल-त्रुटिहीनता के लिए <code>1e-6</code> या <code>1e-5</code>और दोहरी त्रुटिहीनता के लिए <code>1e-14</code> सम्मिलित हैं।<ref>{{cite web|url=https://github.com/godotengine/godot/blob/master/core/math/math_defs.h#L34|title=Godot math_defs.h|website=GitHub.com|date=30 July 2022 }}</ref><ref>{{cite web|url=https://github.com/godotengine/godot/blob/master/modules/mono/glue/Managed/Files/MathfEx.cs#L18|title=गोडोट MathfEx.cs|website=GitHub.com}}</ref> अन्य सामान्य तकनीक यूएलपी है, जो यह परीक्षण करती है कि अंतिम स्थान के अंकों में क्या अंतर है, प्रभावी रूप से यह परीक्षण करती है कि दोनों मान कितने दूर हैं।<ref>{{cite web|url=https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/|title=Comparing Floating Point Numbers, 2012 Edition|website=randomascii.wordpress.com|date=26 February 2012 }}</ref> | ||
चूँकि | चूँकि अपेक्षात्मक उद्देश्यों के लिए ऋणात्मक शून्य और धनात्मक शून्य को सामान्यतः समान माना जाता है, कुछ [[प्रोग्रामिंग भाषा|प्रोग्रामिंग लैंग्वेज]] [[रिलेशनल ऑपरेटर]] और समान निर्माण उन्हें भिन्न मानते हैं। [[जावा (प्रोग्रामिंग भाषा)|जावा]] लैंग्वेज विशिष्टता के अनुसार,<ref>{{cite web|url=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>Float</code> और <code>Double</code> कक्षाओं का <code>equals()</code>, <code>compareTo()</code> और यहां तक कि <code>compare()</code> भी हैं। | ||
==फ़्लोटिंग-पॉइंट संख्याओं को पूर्णांकित करना== | ==फ़्लोटिंग-पॉइंट संख्याओं को पूर्णांकित करना== | ||
आईईईई मानक में चार भिन्न-भिन्न राउंडिंग मोड हैं; प्रथम डिफ़ॉल्ट है; अन्य को [[निर्देशित गोलाई]] कहा जाता है। | आईईईई मानक में चार भिन्न-भिन्न राउंडिंग मोड हैं; प्रथम डिफ़ॉल्ट है; अन्य को [[निर्देशित गोलाई]] कहा जाता है। | ||
* '''<nowiki/>'राउंड टू नियरेस्ट'''' - निकटतम मान तक राउंड; यदि संख्या मध्य में गिरती है तो इसे सम (शून्य) कम से कम महत्वपूर्ण बिट के साथ निकटतम मान तक पूर्णांकित किया जाता है, जिसका अर्थ है कि इसे 50% समय तक पूर्णांकित किया जाता है (आईईईई 754-2008 में इस मोड को दूसरे | * '''<nowiki/>'राउंड टू नियरेस्ट'''' - निकटतम मान तक राउंड; यदि संख्या मध्य में गिरती है तो इसे सम (शून्य) कम से कम महत्वपूर्ण बिट के साथ निकटतम मान तक पूर्णांकित किया जाता है, जिसका अर्थ है कि इसे 50% समय तक पूर्णांकित किया जाता है (आईईईई 754-2008 में इस मोड को दूसरे से अलग करने के लिए राउंडटीज़टूईवन कहा जाता है) -से-निकटतम मोड)। | ||
* '''<nowiki/>'राउंड टुवर्ड 0'''' - शून्य की ओर निर्देशित गोलाई। | * '''<nowiki/>'राउंड टुवर्ड 0'''' - शून्य की ओर निर्देशित गोलाई। | ||
* '''<nowiki/>'राउंड टुवर्ड +∞'''' - धनात्मक अनंत की ओर निर्देशित गोलाई। | * '''<nowiki/>'राउंड टुवर्ड +∞'''' - धनात्मक अनंत की ओर निर्देशित गोलाई। | ||
| Line 379: | Line 379: | ||
*जोड़ें, घटाएं, गुणा करें, भाग करें। | *जोड़ें, घटाएं, गुणा करें, भाग करें। | ||
*[[वर्गमूल]] | *[[वर्गमूल]] | ||
*फ़्लोटिंग पॉइंट शेष यह सामान्य [[मॉड्यूलो ऑपरेशन]] के जैसे नहीं है, यह दो धनात्मक संख्याओं के लिए ऋणात्मक हो सकता है। यह {{math|x–(round(x/y)·y)}} का त्रुटिहीन मान | *फ़्लोटिंग पॉइंट शेष यह सामान्य [[मॉड्यूलो ऑपरेशन]] के जैसे नहीं है, यह दो धनात्मक संख्याओं के लिए ऋणात्मक हो सकता है। यह {{math|x–(round(x/y)·y)}} का त्रुटिहीन मान प्रदान करता है। | ||
* [[पूर्णांक तक पूर्णांकन|निकटतम पूर्णांक तक पूर्णांकन]] अप्रत्यक्ष पूर्णांकन के लिए जब दो पूर्णांकों के | * [[पूर्णांक तक पूर्णांकन|निकटतम पूर्णांक तक पूर्णांकन]] अप्रत्यक्ष पूर्णांकन के लिए जब दो पूर्णांकों के मध्य आधा हो तो सम पूर्णांक चयन किया जाता है। | ||
* | *अपेक्षा संचालन. अधिक स्पष्ट परिणामों के अतिरिक्त, आईईईई 754 परिभाषित करता है कि −∞ = −∞, +∞ = +∞ और <var>x</var> ≠<code>NaN</code> किसी भी <var>x</var> के लिए (सहित) <code>NaN</code>) होता है। | ||
===अनुशंसित फंक्शन्स और प्रेडिकेट्स === | ===अनुशंसित फंक्शन्स और प्रेडिकेट्स === | ||
* <code>copysign(x,y)</code> y के चिह्न के साथ x | * <code>copysign(x,y)</code> y के चिह्न के साथ x प्रदान करता है, इसलिए <code>abs(x)</code> <code>copysign(x,1.0)</code> के समान होती है। यह उन कुछ ऑपरेशनों में से है जो अंकगणित के समान NaN पर संचालित होता है। फ़ंक्शन <code>copysign</code> C99 मानक में नया है। | ||
* −x, विपरीत चिह्न के साथ x | * −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> | ||
| Line 393: | Line 393: | ||
* <code>unordered(x, y)</code> सत्य है जब x, y के साथ अव्यवस्थित है, अर्थात, x या y NaN है। | * <code>unordered(x, y)</code> सत्य है जब x, y के साथ अव्यवस्थित है, अर्थात, x या y NaN है। | ||
* <code>class(x)</code> | * <code>class(x)</code> | ||
* <code>nextafter(x,y)</code> x से y की दिशा में अगला प्रतिनिधित्व योग्य मान | * <code>nextafter(x,y)</code> x से y की दिशा में अगला प्रतिनिधित्व योग्य मान प्रदान करता है। | ||
==इतिहास== | ==इतिहास== | ||
1976 में, [[इंटेल]] फ्लोटिंग-पॉइंट[[ सह प्रोसेसर | कोप्रोसेसर]] का विकास प्रारंभ कर रहा था।<ref name="Intel_2016_Case"/><ref name="Kahan_1998_Story"/> इंटेल को अपेक्षा थी कि वह व्यापक रूप से भिन्न गणित सॉफ्टवेयर लाइब्रेरी में पाए जाने वाले सभी ऑपरेशनों के उत्तम कार्यान्वयन वाली चिप | 1976 में, [[इंटेल]] फ्लोटिंग-पॉइंट[[ सह प्रोसेसर | कोप्रोसेसर]] का विकास प्रारंभ कर रहा था।<ref name="Intel_2016_Case"/><ref name="Kahan_1998_Story"/> इंटेल को अपेक्षा थी कि वह व्यापक रूप से भिन्न गणित सॉफ्टवेयर लाइब्रेरी में पाए जाने वाले सभी ऑपरेशनों के उत्तम कार्यान्वयन वाली चिप विक्रय में सक्षम होगी।<ref name="Intel_2016_Case"/><ref name="Woehr_1997_Kahan"/> | ||
जॉन पामर, जिन्होंने इस परियोजना का प्रबंधन किया था, इसका मानना था कि इस प्रयास को भिन्न-भिन्न प्रोसेसरों में मानक एकीकृत फ़्लोटिंग पॉइंट संचालन द्वारा समर्थित किया जाना चाहिए। उन्होंने [[कैलिफोर्निया विश्वविद्यालय]] के [[विलियम कहाँ|विलियम काहन]] से संपर्क किया, जिन्होंने[[ हेवलेट पैकर्ड ]]के कैलकुलेटर की त्रुटिहीनता में सुधार करने में सहायता की थी। काहन ने सुझाव दिया कि इंटेल[[ डिजिटल उपकरण निगम | डिजिटल इक्विपमेंट कॉर्पोरेशन]] (डीईसी) वैक्स के फ्लोटिंग पॉइंट का उपयोग करता है। प्रथम वैक्स, वैक्स-11/780 1977 के अंत में सामने आया था, और इसके फ्लोटिंग पॉइंट को अत्यधिक महत्व दिया गया था। चूँकि, अपनी चिप को व्यापक मार्केट में | जॉन पामर, जिन्होंने इस परियोजना का प्रबंधन किया था, इसका मानना था कि इस प्रयास को भिन्न-भिन्न प्रोसेसरों में मानक एकीकृत फ़्लोटिंग पॉइंट संचालन द्वारा समर्थित किया जाना चाहिए। उन्होंने [[कैलिफोर्निया विश्वविद्यालय]] के [[विलियम कहाँ|विलियम काहन]] से संपर्क किया, जिन्होंने[[ हेवलेट पैकर्ड ]]के कैलकुलेटर की त्रुटिहीनता में सुधार करने में सहायता की थी। काहन ने सुझाव दिया कि इंटेल[[ डिजिटल उपकरण निगम | डिजिटल इक्विपमेंट कॉर्पोरेशन]] (डीईसी) वैक्स के फ्लोटिंग पॉइंट का उपयोग करता है। प्रथम वैक्स, वैक्स-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 में आयोजित द | ||