आईईईई 754-1985: Difference between revisions
No edit summary |
No edit summary |
||
| 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 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 166: | Line 166: | ||
डबल-एक्यूरेसी नंबर्स 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 356: | Line 356: | ||
== फ़्लोटिंग-पॉइंट नंबर्स की अपेक्षा करना == | == फ़्लोटिंग-पॉइंट नंबर्स की अपेक्षा करना == | ||
नेगेटिव शून्य और पॉजिटिव शून्य के लिए बिट्स के दो कॉम्बिनेशन को एक्सपैक्ट करके, प्रत्येक बिट कॉम्बिनेशन या तो 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> भी हैं। | ||
| Line 365: | Line 365: | ||
आईईईई स्टैण्डर्ड में चार भिन्न-भिन्न राउंडिंग मोड हैं; प्रथम डिफ़ॉल्ट है; अन्य को [[निर्देशित गोलाई]] कहा जाता है। | आईईईई स्टैण्डर्ड में चार भिन्न-भिन्न राउंडिंग मोड हैं; प्रथम डिफ़ॉल्ट है; अन्य को [[निर्देशित गोलाई]] कहा जाता है। | ||
* '''<nowiki/>'राउंड टू नियरेस्ट'''' - निकटतम | * '''<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>) होता है। | *अपेक्षा संचालन. अधिक स्पष्ट परिणामों के अतिरिक्त, आईईईई 754 परिभाषित करता है कि −∞ = −∞, +∞ = +∞ और <var>x</var> ≠<code>NaN</code> किसी भी <var>x</var> के लिए (सहित) <code>NaN</code>) होता है। | ||
| Line 388: | Line 388: | ||
* <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 में घोषित किया गया था, जो ड्राफ्ट स्टैण्डर्ड को इम्प्लीमेंट करने वाली प्रथम चिप थी। | अनुमोदित होने से पूर्व ही, ड्राफ्ट स्टैण्डर्ड को कई निर्माताओं द्वारा इम्प्लीमेंट किया गया था।<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 408: | Line 408: | ||
[[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 तक चला जब इसका आकलन करने के लिए डीईसी द्वारा नियुक्त विशेषज्ञ ने असंतुष्टों का पक्ष लिया था। डीईसी ने यह प्रदर्शित करने के लिए अध्ययन करवाया था कि क्रमिक अंडरफ़्लो बुरा विचार था, किन्तु अध्ययन का निष्कर्ष विपरीत था, और डीईसी ने हार वैल्यू ली थी। 1985 में, स्टैण्डर्ड की पुष्टि की गई थी, किन्तु यह एक वर्ष पूर्व ही रियल स्टैण्डर्ड बन गया था, जिसे कई निर्माताओं द्वारा कार्यान्वित किया गया था।<ref name="Kahan_1998_Story"/><ref name="Chuck_Kahan_Interview"/><ref name="Kahan"/> | ||
==यह भी देखें== | ==यह भी देखें== | ||
*[[आईईईई 754]] | *[[आईईईई 754]] | ||
Revision as of 19:08, 15 September 2023
आईईईई 754-1985[1] कंप्यूटर में फ्लोटिंग-पॉइंट नंबर्स का रिप्रजेंटेशन करने के लिए इंडस्ट्री स्टैण्डर्ड था, जिसे सामान्यतः 1985 में स्वीकार किया गया था और 2008 में आईईईई 754-2008 द्वारा प्रतिस्थापित किया गया था, और फिर 2019 में माइनर वर्ज़न आईईईई 754-2019 द्वारा प्रतिस्थापित किया गया था।[2] अपने 23 वर्षों के समय में, यह फ़्लोटिंग-पॉइंट कैलकुलेशन के लिए सबसे वाइड रूप से उपयोग किया जाने वाला फॉर्मेट था। इसे सॉफ़्टवेयर में, फ़्लोटिंग-पॉइंट लाइब्रेरीज़ के रूप में, और हार्डवेयर में, कई सीपीयू और एफपीयू के इंस्ट्रक्शन में इम्प्लीमेंट किया गया था। आईईईई 754-1985 बनने वाले ड्राफ्ट को इम्प्लीमेंट करने वाला प्रथम इंटीग्रेटेड सर्किट इंटेल 8087 था।
आईईईई 754-1985 बाइनरी में नंबर्स को रिप्रजेंटेशन करता है, जो एक्यूरेसी के चार लेवल्स की परिभाषा प्रदान करता है, जिनमें से दो सबसे अधिक उपयोग किए जाते हैं:
| लेवल | विड्थ | कम्पलीट एक्यूरेसी से रेंज करें | एक्यूरेसी[lower-alpha 1] |
|---|---|---|---|
| सिंगल एक्यूरेसी | 32 bits | ±1.18×10−38 to ±3.4×1038 | लगभग 7 दशमलव अंक |
| डबल एक्यूरेसी | 64 bits | ±2.23×10−308 to ±1.80×10308 | लगभग 16 दशमलव अंक |
स्टैण्डर्ड पॉजिटिव और नेगेटिव इनफाइनाइट के लिए रिप्रजेंटेशन को भी परिभाषित करता है, नेगेटिव शून्य, शून्य से विभाजन जैसे इनवैलिड परिणामों को सुरक्षित करने के लिए पांच एक्सेप्शन, उन एक्सेप्शन्स का रिप्रजेंटेशन करने के लिए विशेष वैल्यू जिन्हें NaN कहा जाता है, ऊपर दिखाए गए छोटी नंबर्स का रिप्रजेंटेशन करने के लिए डिनॉर्मल नंबर्स, और चार गोल मोड है।
नंबर्स का रिप्रजेंटेशन
आईईईई 754 फॉर्मेट में फ़्लोटिंग-पॉइंट नंबर्स में तीन फील्ड्स होते हैं: साइन बिट, बायस्ड एक्सपोनेंट और फ्रैक्शन आदि। निम्नलिखित उदाहरण प्रत्येक का अर्थ बताता है।
दशमलव नंबर 0.1562510 बाइनरी में 0.001012 (अर्थात् 1/8 + 1/32) प्रदर्शित किया गया है। (सबस्क्रिप्ट नंबर बेस प्रदर्शित करते हैं।) साइंटिफिक नोटेशन के अनुरूप, जहां नंबर्स को दशमलव बिंदु के बाईं ओर अन्य-शून्य अंक के रूप में लिखा जाता है, हम इस नंबर को पुनः लिखते हैं जिससे कि इसमें बाइनरी बिंदु के बाईं ओर सिंगल 1 बिट होता है। हम तीन स्टेट्स द्वारा लेफ्ट किये गए बिट्स के ट्रांसफर