आईईईई 754-2008 संशोधन

IEEE 754-2008 अगस्त 2008 में प्रकाशित हुआ था, जिसे IEEE 754r के नाम से जाना जाता है और यह IEEE 754-1985 फ़्लोटिंग-पॉइंट अंकगणित मानक का एक महत्वपूर्ण संशोधन और प्रतिस्थापित है, जबकि 2019 में इसे एक सामान्य संशोधन IEEE 754-2019 के साथ अपडेट किया जाता है। वर्ष 2008 के संशोधन ने पिछले मानक को बढ़ाया जहां आवश्यक था और इस प्रकार दशमलव अंकगणित और प्रारूप जोड़े का एक महत्वपूर्ण मूल मानक कुछ क्षेत्रों को टाइटन कर दिया है, जो अपरिभाषित रूप में रह गए थे और IEEE 854 रेडिक्स स्वतंत्र फ़्लोटिंग पॉइंट मानक में विलय कर दिया गया था।

कुछ स्थितियों में, जहां बाइनरी फ़्लोटिंग पॉइंट अंकगणित की स्ट्रिक्टऱ परिभाषाएँ कुछ उपस्थित इम्प्लीमेंटेशन के साथ प्रदर्शन इन्कम्पैटबल रूप में सकते है और इस प्रकार उन्हें वैकल्पिक बना दिया जाता है।

पुनरीक्षण प्रक्रिया
दिसंबर 2006 की लक्ष्य पूर्णता तिथि के साथ मानक 2000 से संशोधन के अधीन था और इस प्रकार आईईईई मानक का संशोधन सामान्यतः रूप में तीन चरणों का पालन करता है,


 * 1) कार्य समूह - एक समिति जो एक ड्राफ्ट मानक बनाती है
 * 2) बैलट - इच्छुक पार्टियाँ बैलट समूह की सदस्यता लेती हैं और ड्राफ्ट पर मतदान करती हैं और इस प्रकार समूह के 75% को भाग लेना और ड्राफ्ट को आगे बढ़ाने के लिए 75% को अप्रूवल करना होता है; इस प्रकार वोटों की टिप्पणियों का समाधान बैलट समाधान समिति (बीआरसी) द्वारा किया जाता है और यदि वे सब्स्टैन्शल हैं, तो किए गए परिवर्तनों को नए बैलट के साथ दोबारा प्रसारित करना पड़ता है।
 * 3) जब सभी टिप्पणियाँ रेसोल्वड़ हो जाती हैं और कोई और बदलाव नहीं होता है, तो ड्राफ्ट समीक्षा अप्रूवल और प्रकाशन के लिए आईईईई को प्रस्तुत किया जाता है, इसके परिणामस्वरूप परिवर्तन और बैलट भी हो सकते हैं, चूंकि यह दुर्लभ रूप में होता है।

11 जून 2008 को, इसे IEEE संशोधन समिति (रेवकॉम) द्वारा सर्वसम्मति से अनुमोदित किया गया था और इसे औपचारिक रूप से 12 जून 2008 को IEEE-SA मानक बोर्ड द्वारा अनुमोदित किया गया था और इस प्रकार इसे 29 अगस्त 2008 को प्रकाशित किया गया था।

754r वर्किंग समूह फेज
फ्लोटिंग-पॉइंट अंकगणित का कठिन ज्ञान रखने वाले लोगों के लिए मानक का ड्राफ्ट तैयार करने में भागीदारी ओपेन हुई थी और इस प्रकार सिलिकॉन वैली में आयोजित मंथली बैठकों में से कम से कम एक में 90 से अधिक लोगों ने भाग लिया और कई लोगों ने मेलिंग सूची के माध्यम से भाग लिया था।

कई बार प्रगति धीमी रही, जिसके कारण अध्यक्ष को 15 सितंबर 2005 की बैठक में घोषणा करनी पड़ी थी, चूँकि कोई प्रगति नहीं कर पा रहा था और इन आधारों पर अगली सूचना तक इन बैठकों को निलंबित करता है। दिसंबर 2005 में, समिति को दिसंबर 2006 की लक्ष्य पूर्णता तिथि के साथ नए नियमों के तहत पुनर्गठित किया गया था।

फरवरी 2006 में नई नीतियों और प्रक्रियाओं को अपनाया जाता है। सितंबर 2006 में, एक कामकाजी ड्राफ्ट को संपादन के लिए मूल प्रायोजक समिति आईईईई माइक्रोप्रोसेसर मानक समिति या एमएससी को भेजने और प्रायोजक बैलट को मंजूरी के लिए मंजूरी दे दी गई थी।

754r बैलट चरण
ड्राफ्ट का अंतिम संस्करण, संस्करण 1.2.5, 4 अक्टूबर 2006 को एमएससी को प्रस्तुत किया गया था। एमएससी ने 9 अक्टूबर 2006 को ड्राफ्ट को स्वीकार कर लिया था। मतदान प्रक्रिया के समय ड्राफ्ट को विस्तार से महत्वपूर्ण रूप से परिवर्तित कर दिया गया है।

पहला प्रायोजक मतदान 29 नवंबर 2006 से 28 दिसंबर 2006 तक हुआ और इस प्रकार मतदान निकाय के 84 सदस्यों में से 85.7% ने प्रतिक्रिया दी थी और 78.6% ने अप्रूवल के लिए मतदान किया था। जिसमे गलत तरीके से वोट डाले गए थे और 400 से अधिक टिप्पणियाँ की गई थी इसलिए मार्च 2007 में पुनःपरिसंचरण बैलट हुआ था; इसे 84% अप्रूवल प्राप्त हुआ था और इस प्रकार  एक तीसरा ड्राफ्ट दूसरे 15-दिवसीय, पुनःपरिसंचरण बैलट के लिए तैयार किया गया था, जो अप्रैल 2007 के मध्य में शुरू हुआ था। एक प्रोद्योगिकीय कारण से अक्टूबर में चौथे बैलट के साथ बैलट प्रक्रिया फिर से शुरू की गई थी 2007 में 650 मतदाताओं की टिप्पणियों और प्रायोजक (आईईईई एमएससी) के अनुरोधों के परिणामस्वरूप ड्राफ्ट में भी पर्याप्त बदलाव हुए; यह बैलट आवश्यक 75% अप्रूवल तक पहुंचने में विफल रहा था और इस प्रकार 5वें बैलट में 91.0% अप्रूवल के साथ 98.0% प्रतिक्रिया दर थी और इस प्रकार टिप्पणियों के कारण अपेक्षाकृत छोटे परिवर्तन  किये गए थे। 6वें, 7वें और 8वें मतपत्रों की अप्रूवल रेटिंग 90% से अधिक बनी रही और प्रत्येक ड्राफ्ट पर उत्तरोत्तर कम टिप्पणियाँ हुईं थी; जिसमें कोई इन-स्कोप टिप्पणियाँ नहीं थीं और जबकि 8वीं और 9 पिछली टिप्पणियों की पुनरावृत्ति के रूप में थीं और एक ड्राफ्ट में उपस्थित सामग्री से संबंधित नहीं थी और इस प्रकार आईईईई मानक के रूप में अप्रूवल के लिए आईईईई मानक संशोधन समिति ('रेवकॉम') को प्रस्तुत किया गया था।

754r समीक्षा और अप्रूवल चरण
IEEE मानक संशोधन समिति (RevCom) ने अपनी जून 2008 की बैठक में IEEE 754r ड्राफ्ट पर विचार किया और सर्वसम्मति से मंजूरी दे दी, और इसे 12 जून 2008 को IEEE-SA मानक बोर्ड द्वारा अनुमोदित किया गया। अंतिम संपादन पूरा हो गया है और दस्तावेज़ को अब भेज दिया गया है प्रकाशन हेतु आईईईई मानक प्रकाशन विभाग।

आईईईई कक्षा 754-2008 प्रकाशन
नया आईईईई 754 (औपचारिक रूप से आईईईई कक्षा 754-2008, फ्लोटिंग-पॉइंट अंकगणित के लिए आईईईई मानक) आईईईई कंप्यूटर सोसायटी द्वारा 29 अगस्त 2008 को प्रकाशित किया गया था, और आईईईई एक्सप्लोर वेबसाइट पर उपलब्ध है।

यह मानक IEEE 754-1985 का स्थान लेता है। आईईईई 854, रेडिक्स-इंडिपेंडेंट फ़्लोटिंग-पॉइंट मानक दिसंबर 2008 में वापस ले लिया गया था।

संशोधनों का सारांश
मानक में सबसे स्पष्ट संवर्द्धन 16-बिट और 128-बिट बाइनरी प्रकार और तीन दशमलव प्रकार, कुछ नए संचालन और कई अनुशंसित कार्यों को जोड़ना है। हालाँकि, शब्दावली में महत्वपूर्ण स्पष्टीकरण हुए हैं। यह सारांश मानक के प्रत्येक प्रमुख खंड में मुख्य अंतर पर प्रकाश डालता है।

खंड 1: अवलोकन
दशमलव प्रारूप और अंकगणित को शामिल करने के लिए दायरा (मानक के प्रायोजक द्वारा निर्धारित) को विस्तृत किया गया है, और विस्तार योग्य प्रारूप जोड़े गए हैं।

खंड 2: डेफिनिशंस
स्पष्टीकरण और निरंतरता के लिए कई डेफिनिशंस फिर से लिखी गई हैं। स्पष्टता के लिए कुछ शब्दों का नाम बदल दिया गया है, उदाहरण के लिए असामान्य संख्या का नाम बदलकर उपसामान्य कर दिया गया है।

खंड 3: फोर्मट्स
अंकगणितीय फोर्मट्स और इंटरचेंज फोर्मट्स के बीच अंतर के साथ फोर्मट्स का विवरण अधिक नियमित बना दिया गया है और इस प्रकार मानक के अनुरूपता को अब इन शर्तों में परिभाषित किया जाता है। जिसमें अंकगणित एक मानक एन्कोडिंग के रूप में उपयोग किया जाता है।

इनके बीच के अंतर को स्पष्ट करने के लिए फ़्लोटिंग-पॉइंट प्रारूप के विनिर्देश स्तरों की गणना की गई है:


 * 1) सैद्धांतिक वास्तविक संख्याएँ (एक विस्तारित संख्या रेखा)
 * 2) इकाइयां जिन्हें प्रारूप में दर्शाया जा सकता है (संख्याओं का एक सीमित सेट, −0 (संख्या)|−0, अनंत और NaN के साथ)
 * 3) संस्थाओं का विशेष प्रतिनिधित्व: संकेत-प्रतिपादक-महत्व, आदि।
 * 4) उपयोग किया गया बिट-पैटर्न (एन्कोडिंग)।

फिर प्रतिनिधित्व योग्य संस्थाओं के सेट को विस्तार से समझाया गया है, यह दिखाते हुए कि उन्हें महत्व के साथ माना जा सकता है और उन्हें अंश या पूर्णांक के रूप में माना जा सकता है। बुनियादी प्रारूपों के रूप में जाने जाने वाले विशेष सेटों को परिभाषित किया गया है, और बाइनरी और दशमलव प्रारूपों के आदान-प्रदान के लिए उपयोग किए जाने वाले एन्कोडिंग को समझाया गया है।

बाइनरी इंटरचेंज प्रारूपों में कुछ व्यापक प्रारूपों के लिए सामान्यीकृत सूत्रों के साथ, आधा परिशुद्धता (16-बिट भंडारण प्रारूप) और क्वाड परिशुद्धता (128-बिट प्रारूप) जोड़ा गया है; मूल स्वरूपों में 32-बिट, 64-बिट और 128-बिट एन्कोडिंग हैं।

32-128-बिट बाइनरी प्रारूपों की लंबाई से मेल खाते हुए तीन नए दशमलव प्रारूपों का वर्णन किया गया है। ये 7, 16 और 34 अंकों के महत्व के साथ दशमलव इंटरचेंज प्रारूप देते हैं, जो सामान्यीकृत या असामान्यीकृत हो सकते हैं। अधिकतम सीमा और परिशुद्धता के लिए, प्रारूप प्रतिपादक और महत्व के हिस्से को एक संयोजन क्षेत्र में विलय कर देते हैं, और महत्व के शेष भाग को या तो दशमलव पूर्णांक एन्कोडिंग (जो सघन रूप से पैक दशमलव या डीपीडी का उपयोग करता है, बाइनरी-कोडित दशमलव एक संपीड़ित रूप) का उपयोग करके संपीड़ित करता है। दशमलव) एन्कोडिंग या पारंपरिक बाइनरी अंक प्रणाली पूर्णांक एन्कोडिंग। मूल प्रारूप दो बड़े आकार हैं, जिनमें 64-बिट और 128-बिट एन्कोडिंग हैं। कुछ अन्य इंटरचेंज प्रारूपों के लिए सामान्यीकृत सूत्र भी निर्दिष्ट हैं।

विस्तारित और विस्तार योग्य प्रारूप अन्य सटीकता और सीमाओं पर अंकगणित की अनुमति देते हैं।

खंड 4: गुण और पूर्णांक
फ़्लोटिंग-पॉइंट ऑपरेशंस को नियंत्रित करने के लिए स्थैतिक विशेषताओं के उपयोग को प्रोत्साहित करने के लिए इस खंड को बदल दिया गया है, और (आवश्यक राउंडिंग विशेषताओं के अतिरिक्त) वैकल्पिक अपवाद हैंडलिंग, मध्यवर्ती परिणामों का विस्तार, मूल्य-परिवर्तन अनुकूलन और प्रतिलिपि प्रस्तुत करने योग्यता की अनुमति देता है।

राउंड-टू-नियरेस्ट, शून्य राउंडिंग विशेषता से दूर संबंध जोड़ा गया है (केवल दशमलव संचालन के लिए आवश्यक)।

खंड 5: संचालन
इस अनुभाग में कई स्पष्टीकरण हैं (विशेष रूप से तुलना के क्षेत्र में), और पहले से अनुशंसित कई संचालन (जैसे कॉपी, नेगेट, एब्स और क्लास) की अब आवश्यकता है।

नए परिचालनों में फ़्यूज्ड मल्टीप्ली-ऐड (एफएमए), स्पष्ट रूपांतरण, वर्गीकरण विधेय (isNan(x), आदि), विभिन्न न्यूनतम और अधिकतम फ़ंक्शन, कुल ऑर्डरिंग विधेय, और दो दशमलव-विशिष्ट संचालन (समानक्वांटम और क्वांटाइज़) शामिल हैं।

न्यूनतम और अधिकतम
न्यूनतम और अधिकतम संचालन को परिभाषित किया गया है लेकिन उस मामले के लिए कुछ छूट छोड़ दी गई है जहां इनपुट मूल्य में बराबर हैं लेकिन प्रतिनिधित्व में भिन्न हैं। विशेष रूप से:


 * या  शून्य के मान के साथ कुछ उत्पन्न करना चाहिए लेकिन हमेशा पहला तर्क लौटा सकता है।

विंडोिंग जैसे संचालन का समर्थन करने के लिए जिसमें एक NaN इनपुट को अंतिम बिंदुओं में से एक के साथ चुपचाप प्रतिस्थापित किया जाना चाहिए, एक शांत NaN की प्राथमिकता में एक संख्या, x का चयन करने के लिए न्यूनतम और अधिकतम को परिभाषित किया गया है:

शांत NaN पर किसी संख्या के लिए उनकी प्राथमिकता को इंगित करने के लिए इन कार्यों को minNum और maxNum कहा जाता है। हालाँकि, सिग्नलिंग NaN इनपुट की उपस्थिति में, सामान्य ऑपरेशन की तरह एक शांत NaN वापस आ जाता है। मानक के प्रकाशन के बाद, यह देखा गया कि ये नियम इन कार्यों को गैर-सहयोगी बनाते हैं; इस कारण से, उन्हें IEEE 754-2019 में नए ऑपरेशन द्वारा प्रतिस्थापित कर दिया गया है।

दशमलव अंकगणित
दशमलव अंकगणित, जो जावा (प्रोग्रामिंग भाषा), सी शार्प (प्रोग्रामिंग भाषा)|सी#, पीएल/आई, कोबोल, पायथन (प्रोग्रामिंग भाषा), आरईएक्सएक्स इत्यादि में उपयोग किए जाने वाले संगत है, को भी इस खंड में परिभाषित किया गया है। सामान्य तौर पर, दशमलव अंकगणित बाइनरी अंकगणित के समान नियमों का पालन करता है (परिणाम सही ढंग से गोल होते हैं, और इसी तरह), अतिरिक्त नियमों के साथ जो परिणाम के प्रतिपादक को परिभाषित करते हैं (कई स्थितियों में एक से अधिक संभव है)।

सही ढंग से पूर्णांकित आधार रूपांतरण
854 के विपरीत, 754-2008 को एक सीमा के भीतर दशमलव और बाइनरी फ्लोटिंग पॉइंट के बीच सही ढंग से गोल आधार रूपांतरण की आवश्यकता होती है जो प्रारूप पर निर्भर करता है।

खंड 6: अनंत, NaNs, और साइन बिट
इस खंड को संशोधित और स्पष्ट किया गया है, लेकिन कोई बड़ा परिवर्धन नहीं किया गया है। विशेष रूप से, यह सिग्नलिंग/शांत NaN स्थिति की एन्कोडिंग के लिए औपचारिक सिफारिशें करता है।

खंड 7: डिफ़ॉल्ट अपवाद प्रबंधन
इस खंड को संशोधित और काफी हद तक स्पष्ट किया गया है, लेकिन कोई बड़ा परिवर्धन नहीं किया गया है।

खंड 8: वैकल्पिक अपवाद प्रबंधन
ट्रैप्स और ट्राई/कैच जैसे अन्य मॉडलों सहित विभिन्न रूपों में वैकल्पिक अपवाद प्रबंधन की अनुमति देने के लिए इस क्लॉज को पिछले क्लॉज 8 ('ट्रैप्स') से बढ़ा दिया गया है। ट्रैप और अन्य अपवाद तंत्र वैकल्पिक बने हुए हैं, जैसे वे IEEE 754-1985 में थे।

खंड 9: अनुशंसित संचालन
यह खंड नया है; यह लॉग, पावर और त्रिकोणमितीय कार्यों सहित पचास संचालन की रिकमेन्डेशन करता है, जिन्हें लैंग्वेज मानकों को परिभाषित करना चाहिए। ये सभी वैकल्पिक मानक के अनुरूप होने के लिए किसी की भी आवश्यकता नहीं होती है। संचालन में विशेषताओं के लिए कुछ गतिशील मोड और कटौती संचालन का एक सेट स्केल किए गए उत्पाद आदि के रूप में सम्मलित है।

खंड 10: अभिव्यक्ति मूल्यांकन
यह खंड नया है; यह अनुशंसा करता है कि लैंग्वेज मानकों को संचालन के अनुक्रमों के शब्दार्थ को कैसे निर्दिष्ट करना चाहिए और शाब्दिक अर्थों और अनुकूलन की सूक्ष्मताओं को इंगित करता है जो परिणाम के मूल्य को बदलते हैं।

खंड 11: प्रतिलिपि प्रस्तुत करने योग्यता
यह खंड नवीन है; यह अनुशंसा करता है कि लैंग्वेज मानकों को प्रतिलिपि प्रस्तुत करने योग्य प्रोग्राम लिखने का साधन प्रदान करना चाहिए अर्थात, प्रोग्राम जो किसी लैंग्वेज के सभी इम्प्लीमेंटेशन में समान परिणाम देते है और इस प्रकार यह वर्णन करता है कि प्रतिलिपि प्रस्तुत करने योग्य परिणाम प्राप्त करने के लिए क्या करने की आवश्यकता होती है।

अनेक्स ए: ग्रंथ सूची
यह अनेक्स नवीन है; इसमें कुछ उपयोगी सन्दर्भ सूचीबद्ध हैं।

अनेक्स बी: प्रोग्राम डिबगिंग समर्थन
यह अनेक्स नवीन है; यह डिबगर डेवलपर्स को उन सुविधाओं के लिए मार्गदर्शन प्रदान करता है जो फ़्लोटिंग-पॉइंट कोड की डिबगिंग का समर्थन करने के लिए वांछित हैं।

संचालन का सूचकांक
यह एक नवीन सूचकांक है, जो मानक आवश्यक या वैकल्पिक रूप में वर्णित सभी कार्यों को सूचीबद्ध करता है।

डिसकसड लेकिन सम्मलित नहीं
सीपीयू डिजाइन और डेवलपमेंट में बदलाव के कारण 2008 आईईईई फ्लोटिंग-पॉइंट मानक को 1985 के मानक के रूप में ऐतिहासिक या पुराना माना जा सकता है, जिसे इसके द्वारा प्रतिस्थापित किया गया था। मानकीकरण प्रक्रिया में कई बाहरी चर्चाएँ और आइटम सम्मलित नहीं थे और इस प्रकार नीचे दिए गए आइटम वे हैं जो सार्वजनिक ज्ञान के रूप बन गए. है।


 * अनेक्स L ने लैंग्वेज डेवलपर्स को रिकमेन्डेशन की है कि किसी लैंग्वेज में मानक में उपस्थित वस्तुओं को सुविधाओं से कैसे जोड़ा जाता है।
 * अनेक्स U ने संख्यात्मक अंडरफ्लो परिभाषाओं के चयन पर मार्गदर्शन प्रदान किया है।


 * 754 में अंडरफ़्लो की परिभाषा यह थी कि परिणाम छोटा है और सटीकता की हानि का सामना करता है।


 * 'छोटी' स्थिति के निर्धारण के लिए दो परिभाषाओं की अनुमति दी गई थी और असीमित प्रतिपादक के साथ, कार्य परिशुद्धता के लिए असीम रूप से सटीक परिणाम को पूर्ण करने से पहले या बाद में अनुमति दी गई है।


 * सटीकता की हानि की दो परिभाषाओं की अनुमति दी गई है और इस प्रकार सटीक परिणाम या केवल अपसामान्यीकरण के कारण हानि के रूप में हो सकती है। किसी भी ज्ञात हार्डवेयर प्रणाली ने बाद वाले को प्रयुक्त नहीं किया और इसे एक विकल्प के रूप में संशोधित मानक से हटा दिया है।


 * 754r के अनेक्स U ने रिकमेन्डेशन की कि गोलाई के बाद केवल छोटापन और सटीकता की हानि ही अंडरफ्लो सिग्नल का कारण हो सकती है।


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

बाहरी संबंध

 * Committee working page: IEEE 754: Standard for Binary Floating-Point Arithmetic
 * Densely Packed Decimal
 * William Kahan's paper on How Futile are Mindless Assessments of Roundoff in Floating-Point Computation
 * ISO Language Independent Arithmetic Standard
 * - XDR: External Data Representation RFC