आईईईई 754-1985: Difference between revisions
From Vigyanwiki
No edit summary |
m (22 revisions imported from alpha:आईईईई_754-1985) |
||
| (3 intermediate revisions by 2 users not shown) | |||
| Line 22: | Line 22: | ||
|लगभग 16 दशमलव अंक | |लगभग 16 दशमलव अंक | ||
|} | |} | ||
स्टैण्डर्ड पॉजिटिव और नेगेटिव इनफाइनाइट के लिए रिप्रजेंटेशन को भी परिभाषित करता है, [[नकारात्मक शून्य|नेगेटिव शून्य]], [[शून्य से विभाजन]] जैसे इनवैलिड परिणामों को सुरक्षित करने के लिए पांच एक्सेप्शन, उन एक्सेप्शन्स का रिप्रजेंटेशन करने के लिए विशेष | स्टैण्डर्ड पॉजिटिव और नेगेटिव इनफाइनाइट के लिए रिप्रजेंटेशन को भी परिभाषित करता है, [[नकारात्मक शून्य|नेगेटिव शून्य]], [[शून्य से विभाजन]] जैसे इनवैलिड परिणामों को सुरक्षित करने के लिए पांच एक्सेप्शन, उन एक्सेप्शन्स का रिप्रजेंटेशन करने के लिए विशेष वैल्यू जिन्हें [[NaN]] कहा जाता है, ऊपर दिखाए गए छोटी नंबर्स का रिप्रजेंटेशन करने के लिए [[असामान्य संख्या|डिनॉर्मल नंबर्स]], और चार गोल मोड है। | ||
==नंबर्स का रिप्रजेंटेशन== | ==नंबर्स का रिप्रजेंटेशन== | ||
| Line 40: | Line 40: | ||
: फ्रैक्शन = .01000…<sub>2</sub>. | : फ्रैक्शन = .01000…<sub>2</sub>. | ||
आईईईई 754 एक्सपोनेंट में [[ऑफसेट बाइनरी]] जोड़ता है जिससे कि कई स्टेट्स में नंबर्स की अपेक्षा उसी हार्डवेयर द्वारा सरलता से की जा सके जो साइंड 2-कॉम्प्लीमेंट इंटिजर्स की अपेक्षा करता है। बायस्ड एक्सपोनेंट का उपयोग करते हुए, दो पॉजिटिव फ़्लोटिंग-पॉइंट नंबर्स में से छोटी नंबर चिह्न और परिमाण इंटिजर्स के समान क्रम के पश्चात बड़ी नंबर से कम निकलती है। यदि दो फ़्लोटिंग-पॉइंट नंबर्स के भिन्न-भिन्न चिह्न हैं, तो चिह्न-और-परिमाण अपेक्षा बायस्ड एक्सपोनेंट के साथ भी कार्य करती है। चूँकि, यदि दोनों बायस्ड-एक्सपोनेंट फ़्लोटिंग-पॉइंट नंबर्स नेगेटिव हैं, तो क्रम को विपरीत कर दिया जाना चाहिए। यदि एक्सपोनेंट को, | आईईईई 754 एक्सपोनेंट में [[ऑफसेट बाइनरी]] जोड़ता है जिससे कि कई स्टेट्स में नंबर्स की अपेक्षा उसी हार्डवेयर द्वारा सरलता से की जा सके जो साइंड 2-कॉम्प्लीमेंट इंटिजर्स की अपेक्षा करता है। बायस्ड एक्सपोनेंट का उपयोग करते हुए, दो पॉजिटिव फ़्लोटिंग-पॉइंट नंबर्स में से छोटी नंबर चिह्न और परिमाण इंटिजर्स के समान क्रम के पश्चात बड़ी नंबर से कम निकलती है। यदि दो फ़्लोटिंग-पॉइंट नंबर्स के भिन्न-भिन्न चिह्न हैं, तो चिह्न-और-परिमाण अपेक्षा बायस्ड एक्सपोनेंट के साथ भी कार्य करती है। चूँकि, यदि दोनों बायस्ड-एक्सपोनेंट फ़्लोटिंग-पॉइंट नंबर्स नेगेटिव हैं, तो क्रम को विपरीत कर दिया जाना चाहिए। यदि एक्सपोनेंट को, वैल्यू लीजिए, 2-कम्पलीट नंबर के रूप में प्रदर्शित किया जाता है, तो यह देखने के लिए अपेक्षा करना कि दो नंबर्स में से कौन सी बड़ी है, सुविधाजनक नहीं होता है। | ||
लीडिंग 1 बिट को ओमिटेड कर दिया गया है क्योंकि एक्सपैक्ट शून्य सभी नंबर्स लीडिंग 1 से प्रारंभ होती हैं; लीडिंग 1 इम्प्लीसिट है और वास्तव में इसे स्टोर करने की आवश्यकता नहीं है जो मुफ़्त में अतिरिक्त एक्यूरेसी प्रदान करता है। | लीडिंग 1 बिट को ओमिटेड कर दिया गया है क्योंकि एक्सपैक्ट शून्य सभी नंबर्स लीडिंग 1 से प्रारंभ होती हैं; लीडिंग 1 इम्प्लीसिट है और वास्तव में इसे स्टोर करने की आवश्यकता नहीं है जो मुफ़्त में अतिरिक्त एक्यूरेसी प्रदान करता है। | ||
| Line 56: | Line 56: | ||
ऊपर वर्णित नंबर रिप्रजेंटेशन को नॉर्मेलाइज़ कहा जाता है, जिसका अर्थ है कि इम्प्लीसिट लीडिंग बाइनरी अंक 1 है। अंडरफ्लो होने पर एक्यूरेसी की हानि को कम करने के लिए, आईईईई 754 में नॉर्मेलाइज़ रिप्रजेंटेशन में संभव से छोटे अंशों का रिप्रजेंटेशन करने की क्षमता सम्मिलित है। इम्प्लीसिट लीडिंग अंक 0 बनाता है। ऐसी नंबर्स को असामान्य नंबर्स कहा जाता है। उनमें नॉर्मेलाइज़ नंबर के रूप में कई [[महत्वपूर्ण अंक|सिग्नीफिकेंट डिजिट]] सम्मिलित नहीं होते हैं, किन्तु जब किसी ऑपरेशन का रिजल्ट शून्य नहीं होता है, किन्तु नॉर्मेलाइज़ नंबर द्वारा प्रदर्शित किये जाने के लिए शून्य के अधिक निकट होता है, तो वे एक्यूरेसी की क्रमिक हानि को सक्षम करते हैं। | ऊपर वर्णित नंबर रिप्रजेंटेशन को नॉर्मेलाइज़ कहा जाता है, जिसका अर्थ है कि इम्प्लीसिट लीडिंग बाइनरी अंक 1 है। अंडरफ्लो होने पर एक्यूरेसी की हानि को कम करने के लिए, आईईईई 754 में नॉर्मेलाइज़ रिप्रजेंटेशन में संभव से छोटे अंशों का रिप्रजेंटेशन करने की क्षमता सम्मिलित है। इम्प्लीसिट लीडिंग अंक 0 बनाता है। ऐसी नंबर्स को असामान्य नंबर्स कहा जाता है। उनमें नॉर्मेलाइज़ नंबर के रूप में कई [[महत्वपूर्ण अंक|सिग्नीफिकेंट डिजिट]] सम्मिलित नहीं होते हैं, किन्तु जब किसी ऑपरेशन का रिजल्ट शून्य नहीं होता है, किन्तु नॉर्मेलाइज़ नंबर द्वारा प्रदर्शित किये जाने के लिए शून्य के अधिक निकट होता है, तो वे एक्यूरेसी की क्रमिक हानि को सक्षम करते हैं। | ||
असामान्य नंबर को सभी 0 बिट्स के बायस्ड एक्सपोनेंट के साथ प्रदर्शित किया जाता है, जो सिंगल एक्यूरेसी में −126 के एक्सपोनेंट का रिप्रजेंटेशन करता है (−127 नहीं), या | असामान्य नंबर को सभी 0 बिट्स के बायस्ड एक्सपोनेंट के साथ प्रदर्शित किया जाता है, जो सिंगल एक्यूरेसी में −126 के एक्सपोनेंट का रिप्रजेंटेशन करता है (−127 नहीं), या डबल एक्यूरेसी में −1022 (−1023 नहीं) का रिप्रजेंटेशन करता है।<ref>{{cite book|last=Hennessy|title=कंप्यूटर संगठन और डिज़ाइन|year=2009|url=https://archive.org/details/computerorganiza00patt_779|url-access=limited|publisher=Morgan Kaufmann|page=[https://archive.org/details/computerorganiza00patt_779/page/n291 270]|isbn=9780123744937 }}</ref> इसके विपरीत, नार्मल नंबर का रिप्रजेंटेशन करने वाला सबसे छोटा बायस्ड एक्सपोनेंट 1 है (नीचे उदाहरण देखें)। | ||
== | ==नॉन-नंबर्स का रिप्रजेंटेशन == | ||
किसी कैलकुलेशन की इन्फिनिटी या इनवैलिड रिजल्ट को प्रदर्शित करने के लिए बायस्ड-एक्सपोनेंट फील्ड सभी 1 बिट्स से कम्पलीट है। | किसी कैलकुलेशन की इन्फिनिटी या इनवैलिड रिजल्ट को प्रदर्शित करने के लिए बायस्ड-एक्सपोनेंट फील्ड सभी 1 बिट्स से कम्पलीट है। | ||
| Line 84: | Line 84: | ||
सिंगल-एक्यूरेसी नंबर्स 32 बिट्स पर व्याप्त हैं। सिंगल एक्यूरेसी में: | सिंगल-एक्यूरेसी नंबर्स 32 बिट्स पर व्याप्त हैं। सिंगल एक्यूरेसी में: | ||
* शून्य के निकटतम पॉजिटिव और नेगेटिव नंबर्स (घातक फील्ड में सभी 0 के साथ असामान्य | * शून्य के निकटतम पॉजिटिव और नेगेटिव नंबर्स (घातक फील्ड में सभी 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 × 2<sup>−126</sup> ≈ ±1.17549{{e|−38}} | *: ±1 × 2<sup>−126</sup> ≈ ±1.17549{{e|−38}} | ||
* शून्य से सबसे दूर की परिमित पॉजिटिव और परिमित नेगेटिव नंबर्स (घातक फील्ड में 254 और फ्रैक्शन फील्ड में सभी 1 के साथ | * शून्य से सबसे दूर की परिमित पॉजिटिव और परिमित नेगेटिव नंबर्स (घातक फील्ड में 254 और फ्रैक्शन फील्ड में सभी 1 के साथ वैल्यू द्वारा प्रदर्शित की गई) हैं: | ||
*: ±(2−2<sup>−23</sup>) × 2<sup>127</sup><ref name="Kahan">{{Cite document | *: ±(2−2<sup>−23</sup>) × 2<sup>127</sup><ref name="Kahan">{{Cite document | ||
| author = William Kahan |author-link=William Kahan | | author = William Kahan |author-link=William Kahan | ||
| Line 97: | Line 97: | ||
| access-date = 2007-04-12 }}</ref> ≈ ±3.40282{{e|38}} | | access-date = 2007-04-12 }}</ref> ≈ ±3.40282{{e|38}} | ||
सिंगल एक्यूरेसी में दिए गए एक्सपोनेंट के लिए कुछ उदाहरण सीमा और अंतराल | सिंगल एक्यूरेसी में दिए गए एक्सपोनेंट के लिए कुछ उदाहरण सीमा और अंतराल वैल्यू है: | ||
{| class="wikitable" style="text-align:right;" | {| class="wikitable" style="text-align:right;" | ||
| Line 161: | Line 161: | ||
| ≈ 2.02824e31 | | ≈ 2.02824e31 | ||
|} | |} | ||
उदाहरण के लिए, 16,777,217 को 32-बिट फ़्लोट के रूप में एन्कोड नहीं किया जा सकता क्योंकि इसे 16,777,216 पर | उदाहरण के लिए, 16,777,217 को 32-बिट फ़्लोट के रूप में एन्कोड नहीं किया जा सकता क्योंकि इसे 16,777,216 पर रौंडिंग किया जाएगा। इससे ज्ञात होता है कि फ़्लोटिंग पॉइंट अंकगणित लेखांकन सॉफ़्टवेयर के लिए अनुपयुक्त क्यों है। चूँकि, रिप्रजेंटेशन योग्य सीमा के अंदर सभी इंटिजर्स जो 2 की पावर हैं, उन्हें बिना गोलाई के 32-बिट फ़्लोट में स्टोर किया जा सकता है। | ||
=== | === डबल एक्यूरेसी === | ||
डबल-एक्यूरेसी नंबर्स 64 बिट्स पर व्याप्त हैं। | डबल-एक्यूरेसी नंबर्स 64 बिट्स पर व्याप्त हैं। डबल एक्यूरेसी में: | ||
* शून्य के निकटतम पॉजिटिव और नेगेटिव नंबर्स (एक्सप फील्ड में सभी 0 के साथ असामान्य | * शून्य के निकटतम पॉजिटिव और नेगेटिव नंबर्स (एक्सप फील्ड में सभी 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 × 2<sup>−1022</sup> ≈ ±2.22507{{e|−308}} | *: ±1 × 2<sup>−1022</sup> ≈ ±2.22507{{e|−308}} | ||
* शून्य से सबसे दूर की परिमित पॉजिटिव और परिमित नेगेटिव नंबर्स (एक्सप फील्ड में 2046 और फ्रैक्शन फील्ड में सभी 1 के साथ | * शून्य से सबसे दूर की परिमित पॉजिटिव और परिमित नेगेटिव नंबर्स (एक्सप फील्ड में 2046 और फ्रैक्शन फील्ड में सभी 1 के साथ वैल्यू द्वारा प्रदर्शित की गई) हैं: | ||
*: ±(2−2<sup>−52</sup>)×2<sup>1023</sup><ref name="Kahan" />≈ ±1.79769{{e|308}} | *: ±(2−2<sup>−52</sup>)×2<sup>1023</sup><ref name="Kahan" />≈ ±1.79769{{e|308}} | ||
डबल एक्यूरेसी में दिए गए एक्सपोनेंट के लिए कुछ उदाहरण रेंज और गैप वैल्यू है: | |||
{| class="wikitable" style="text-align:right;" | {| class="wikitable" style="text-align:right;" | ||
| Line 254: | Line 254: | ||
! एक्सपोनेंट फील्ड | ! एक्सपोनेंट फील्ड | ||
! फ्रैक्शन फील्ड | ! फ्रैक्शन फील्ड | ||
! | ! वैल्यू | ||
|- | |- | ||
| शून्य | | शून्य | ||
| Line 349: | Line 349: | ||
| style="text-align:right;"| 255 | | style="text-align:right;"| 255 | ||
| 1111 1111 | | 1111 1111 | ||
| | | नॉन शून्य | ||
| NaN | | NaN | ||
|- | |- | ||
| Line 355: | Line 355: | ||
|} | |} | ||
== फ़्लोटिंग-पॉइंट नंबर्स | == फ़्लोटिंग-पॉइंट नंबर्स को कम्पेयर करना == | ||
नेगेटिव शून्य और पॉजिटिव शून्य के लिए बिट्स के दो कॉम्बिनेशन को एक्सपैक्ट करके, प्रत्येक बिट कॉम्बिनेशन या तो 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> भी हैं। | चूँकि अपेक्षात्मक उद्देश्यों के लिए नेगेटिव शून्य और पॉजिटिव शून्य को सामान्यतः समान माना जाता है, कुछ [[प्रोग्रामिंग भाषा|प्रोग्रामिंग लैंग्वेज]] [[रिलेशनल ऑपरेटर]] और समान निर्माण उन्हें फ्रैक्शन मानते हैं। [[जावा (प्रोग्रामिंग भाषा)|जावा]] लैंग्वेज विशिष्टता के अनुसार,<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/>'राउंड टू नियरेस्ट'''' - निकटतम | * '''<nowiki/>'राउंड टू नियरेस्ट'''' - निकटतम वैल्यू तक राउंड; यदि नंबर मध्य में गिरती है तो इसे सम (शून्य) कम से कम महत्वपूर्ण बिट के साथ निकटतम वैल्यू तक रौंडिंग किया जाता है, जिसका अर्थ है कि इसे 50% समय तक रौंडिंग किया जाता है (आईईईई 754-2008 में इस मोड को दूसरे से अलग करने के लिए राउंडटीज़टूईवन कहा जाता है) -से-निकटतम मोड)। | ||
* '''<nowiki/>'राउंड टुवर्ड 0'''' - शून्य की ओर निर्देशित गोलाई। | * '''<nowiki/>'राउंड टुवर्ड 0'''' - शून्य की ओर निर्देशित गोलाई। | ||
* '''<nowiki/>'राउंड टुवर्ड +∞'''' - पॉजिटिव इनफाइनाइट की ओर निर्देशित गोलाई। | * '''<nowiki/>'राउंड टुवर्ड +∞'''' - पॉजिटिव इनफाइनाइट की ओर निर्देशित गोलाई। | ||
| Line 375: | Line 375: | ||
== फंक्शन्स और प्रेडिकेट्स == | == फंक्शन्स और प्रेडिकेट्स == | ||
===स्टैण्डर्ड | ===स्टैण्डर्ड ऑपरेशन=== | ||
निम्नलिखित कार्य प्रदान किए जाने चाहिए: | निम्नलिखित कार्य प्रदान किए जाने चाहिए: | ||
*जोड़ें, घटाएं, मल्टीप्लाई करें, भाग करें। | *जोड़ें, घटाएं, मल्टीप्लाई करें, भाग करें। | ||
*[[वर्गमूल]] | *[[वर्गमूल]] | ||
*फ़्लोटिंग पॉइंट शेष यह सामान्य [[मॉड्यूलो ऑपरेशन]] के जैसे नहीं है, यह दो पॉजिटिव नंबर्स के लिए नेगेटिव हो सकता है। यह {{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>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 के लिए [[विधेय (गणित)|प्रेडीकेट]] परिमित | * <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 की दिशा में अगला रिप्रजेंटेशन योग्य वैल्यू प्रदान करता है। | ||
==इतिहास== | ==इतिहास== | ||
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 के अंत में सामने आया था, और इसके फ्लोटिंग पॉइंट को अत्यधिक महत्व दिया गया था। चूँकि, अपनी चिप को वाइड मार्केट में विक्रय के लिए, इंटेल सर्वोत्तम फ़्लोटिंग पॉइंट चाहता था, और काहन ने विशिष्टताओं को प्रस्तुत किया था।<ref name="Intel_2016_Case"/> काहन ने प्रारंभ में अनुरोध किया था कि फ़्लोटिंग पॉइंट बेस दशमलव हो<ref>W. Kahan 2003, pers. comm. to [[Mike Cowlishaw]] and others after an IEEE 754 meeting</ref> किन्तु कोप्रोसेसर का हार्डवेयर डिज़ाइन उस परिवर्तन को करने के लिए अधिक दूर था। | ||
इंटेल के | इंटेल के इंटरनल प्रोसेस ने अन्य विक्रेताओं को चिंतित कर दिया, जिन्होंने समान संयोग सुनिश्चित करने के लिए मानकीकरण प्रयास स्थापित किया था। काहन ने नवंबर 1977 में आयोजित दूसरी आईईईई 754 स्टैण्डर्ड प्रोसेस समूह की बैठक में भाग लिया था। अंत में उन्हें इंटेल से उनके कोप्रोसेसर के लिए उनके कार्य के आधार पर ड्राफ्ट प्रस्ताव प्रस्तुत करने की अनुमति प्राप्त हुई; उन्हें फॉर्मेट के विवरण और उसके औचित्य को समझाने की अनुमति प्रदान की गई थी, किन्तु इंटेल के प्रोसेस आर्किटेक्चर से संबंधित कुछ भी नहीं था। ड्राफ्ट जेरोम कूनन और हेरोल्ड स्टोन के साथ सह-लिखित था, और प्रारंभ में इसे काहन-कूनन-स्टोन प्रस्ताव या के-सी-एस फॉर्मेट के रूप में जाना जाता था।<ref name="Intel_2016_Case"/><ref name="Kahan_1998_Story"/><ref name="Woehr_1997_Kahan"/><ref name="Chuck_Kahan_Interview"/> | ||
चूंकि 8-बिट एक्सपोनेंट | चूंकि 8-बिट एक्सपोनेंट डबल-एक्यूरेसी नंबर्स के लिए वांछित कुछ ऑपरेशन के लिए पर्याप्त नहीं था, उदाहरण के लिए दो 32-बिट नंबर्स के प्रोडक्ट को स्टोर करने के लिए,<ref name="Microsoft_2006_KB35826"/> काहन के प्रस्ताव और डीईसी के प्रति-प्रस्ताव दोनों में 11 बिट्स का उपयोग किया गया था, जैसे कि 1965 से [[सीडीसी 6600]] के टाइम टेस्टेड 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 में घोषित किया गया था, जो ड्राफ्ट स्टैण्डर्ड को इम्प्लीमेंट करने वाली प्रथम चिप थी। | ||
[[File:Intel C8087.jpg|thumb|left|इंटेल 8087 फ्लोटिंग-पॉइंट कोप्रोसेसर]]1980 में, इंटेल 8087 चिप पहले ही इम्प्लीमेंट हो चुकी थी,<ref name="Olympus_MIC-D"/> किन्तु प्रदर्शन संबंधी चिंताओं के कारण डीईसी विशेष रूप से असामान्य नंबर्स का विरोध करता रहा और चूंकि इससे डीईसी को डीईसी के फॉर्मेट पर मानकीकरण करने के लिए प्रतिस्पर्धात्मक लाभ मिलता है। | [[File:Intel C8087.jpg|thumb|left|इंटेल 8087 फ्लोटिंग-पॉइंट कोप्रोसेसर]]1980 में, इंटेल 8087 चिप पहले ही इम्प्लीमेंट हो चुकी थी,<ref name="Olympus_MIC-D"/> किन्तु प्रदर्शन संबंधी चिंताओं के कारण डीईसी विशेष रूप से असामान्य नंबर्स का विरोध करता रहा और चूंकि इससे डीईसी को डीईसी के फॉर्मेट पर मानकीकरण करने के लिए प्रतिस्पर्धात्मक लाभ मिलता है। | ||
क्रमिक अंडरफ़्लो पर विचार 1981 तक चला जब इसका आकलन करने के लिए डीईसी द्वारा नियुक्त विशेषज्ञ ने असंतुष्टों का पक्ष लिया था। डीईसी ने यह प्रदर्शित करने के लिए अध्ययन करवाया था कि क्रमिक अंडरफ़्लो बुरा विचार था, किन्तु अध्ययन का निष्कर्ष विपरीत था, और डीईसी ने हार | क्रमिक अंडरफ़्लो पर विचार 1981 तक चला जब इसका आकलन करने के लिए डीईसी द्वारा नियुक्त विशेष | ||