विस्तारित परिशुद्धता

From alpha
Jump to navigation Jump to search

विस्तारित परिशुद्धता फ़्लोटिंग-पॉइंट अंकगणित | फ़्लोटिंग-पॉइंट नंबर स्वरूपों को संदर्भित करता है जो मूल फ़्लोटिंग-पॉइंट स्वरूपों की तुलना में अधिक सटीक (कंप्यूटर विज्ञान) प्रदान करते हैं।[1] विस्तारित सटीक प्रारूप आधार प्रारूप पर अभिव्यक्ति के मध्यवर्ती मूल्यों में फ़्लोटिंग-पॉइंट त्रुटि शमन द्वारा मूल प्रारूप का समर्थन करते हैं। विस्तारित परिशुद्धता के विपरीत, मनमाने ढंग से सटीक अंकगणित विशेष सॉफ़्टवेयर (या, शायद ही कभी, हार्डवेयर) का उपयोग करके बहुत बड़े संख्यात्मक प्रकारों के कार्यान्वयन को संदर्भित करता है (भंडारण गणना के साथ जो आमतौर पर दो की शक्ति नहीं होती है)।

विस्तारित सटीक कार्यान्वयन

विस्तारित फ़्लोटिंग-पॉइंट स्वरूपों का एक लंबा इतिहास है जो पिछली शताब्दी के मध्य तक वापस आ गया है। विभिन्न निर्माताओं ने विभिन्न मशीनों के लिए विस्तारित परिशुद्धता के लिए विभिन्न स्वरूपों का उपयोग किया है। कई मामलों में विस्तारित परिशुद्धता का प्रारूप साधारण सिंगल- और डबल-परिशुद्धता स्वरूपों के स्केल-अप के समान नहीं है, जिसका विस्तार करना है। कुछ मामलों में कार्यान्वयन फ्लोटिंग-पॉइंट डेटा प्रारूप में केवल एक सॉफ्टवेयर-आधारित परिवर्तन था, लेकिन ज्यादातर मामलों में हार्डवेयर में विस्तारित परिशुद्धता लागू की गई थी, या तो सेंट्रल प्रोसेसिंग यूनिट में ही बनाया गया था, या अधिक बार, हार्डवेयर में बनाया गया था। एक वैकल्पिक, संलग्न प्रोसेसर जिसे फ्लोटिंग-पॉइंट यूनिट (FPU) या फ़्लोटिंग-पॉइंट प्रोसेसर (फ़्लोटिंग-पॉइंट यूनिट) कहा जाता है, CPU के लिए एक तेज़ इनपुट / आउटपुट डिवाइस के रूप में सुलभ है।

आईबीएम विस्तारित सटीक प्रारूप

आईबीएम 1130, 1965 में बेचा गया,[2] ने दो फ़्लोटिंग-पॉइंट फ़ॉर्मैट पेश किए: एक 32-बिट मानक सटीक फ़ॉर्मेट और एक 40-बिट विस्तारित सटीक फ़ॉर्मेट। मानक सटीक प्रारूप में 24-बिट दो का पूरक महत्व होता है जबकि विस्तारित परिशुद्धता 32-बिट दो के पूरक महत्व का उपयोग करती है। बाद वाला प्रारूप सीपीयू के 32-बिट पूर्णांक संचालन का पूर्ण उपयोग करता है। दोनों स्वरूपों में विशेषता एक 8-बिट फ़ील्ड है जिसमें 128 तक दो एक्सपोनेंट पूर्वाग्रह की शक्ति होती है। फ़्लोटिंग-पॉइंट अंकगणितीय संचालन सॉफ़्टवेयर द्वारा किया जाता है, और डबल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप बिल्कुल समर्थित नहीं है। विस्तारित प्रारूप में तीन 16-बिट शब्द होते हैं, अतिरिक्त स्थान को केवल अनदेखा कर दिया जाता है। रेफरी>सबरूटीन लाइब्रेरी (PDF). IBM 1130 (9th ed.). IBM Corporation. 1974. p. 93.</ref>

आईबीएम सिस्टम / 360 32-बिट शॉर्ट फ्लोटिंग-पॉइंट प्रारूप और 64-बिट लंबे फ्लोटिंग-पॉइंट प्रारूप का समर्थन करता है। रेफरी>{{cite book |series=IBM System/360 |title=कोई कार्य करने के निर्धारित तरीके|edition=9th |year=1970 |publisher=IBM Corporation |page=41}</ref> 360/85 और फॉलो-ऑन IBM System/370|System/370 128-बिट विस्तारित प्रारूप के लिए समर्थन जोड़ता है। रेफरी>{{cite book |title=आईबीएम सिस्टम/370 संचालन के सिद्धांत|edition=7th |year=1980 |publisher=IBM Corporation |pages=9-2–9-3}</ref> ये प्रारूप अभी भी वर्तमान z/आर्किटेक्चर में समर्थित हैं, जहां उन्हें अब IBM आईबीएम हेक्साडेसिमल फ्लोटिंग-पॉइंट|हेक्साडेसिमल फ्लोटिंग-पॉइंट (HFP) प्रारूप कहा जाता है।

माइक्रोसॉफ्ट एमबीएफ विस्तारित सटीक प्रारूप

6502 CPU के लिए Microsoft BASIC पोर्ट, जैसे कमोडोर बेसिक, AppleSoft BASIC, KIM-1 BASIC या MicroTAN BASIC जैसे अनुकूलनों में, 40-बिट MBF | विस्तारित 40-बिट संस्करण फ्लोटिंग-पॉइंट प्रारूप Microsoft बाइनरी प्रारूप का समर्थन करता है ( एमबीएफ) 1977 से।[3]

आईईईई 754 विस्तारित सटीक प्रारूप

आईईईई 754 फ़्लोटिंग-पॉइंट मानक अनुशंसा करता है कि कार्यान्वयन विस्तारित सटीक प्रारूप प्रदान करते हैं। मानक विस्तारित प्रारूप के लिए न्यूनतम आवश्यकताओं को निर्दिष्ट करता है लेकिन एन्कोडिंग निर्दिष्ट नहीं करता है।[4] एन्कोडिंग कार्यान्वयनकर्ता की पसंद है।[5] IA32, [[x86-64]], और इटेनियम प्रोसेसर 64-बिट महत्व के साथ 80-बिट डबल विस्तारित विस्तारित सटीक प्रारूप का समर्थन करते हैं। Intel 8087 मैथ सह प्रोसेसर पहला x86 डिवाइस था जो हार्डवेयर में फ्लोटिंग-पॉइंट अंकगणित का समर्थन करता था। इसे फ़्लोटिंग-पॉइंट नंबरों को एन्कोडिंग और इंटरचेंज करने के लिए 32-बिट एकल सटीक प्रारूप और 64-बिट डबल-परिशुद्धता प्रारूप का समर्थन करने के लिए डिज़ाइन किया गया था। अस्थायी वास्तविक (विस्तारित) प्रारूप को डेटा को उच्च परिशुद्धता पर संग्रहीत नहीं करने के लिए डिज़ाइन किया गया था, बल्कि मुख्य रूप से मध्यवर्ती गणनाओं में अतिप्रवाह और राउंडऑफ़-त्रुटियों को कम करके दोहरे परिणामों की गणना को अधिक विश्वसनीय और सटीक रूप से अनुमति देने के लिए किया गया था।[lower-alpha 1][7][8] उदाहरण के लिए, कई फ्लोटिंग-पॉइंट एल्गोरिदम (जैसे घातांक) सबसे प्रत्यक्ष कार्यान्वयन का उपयोग करते हुए गणना किए जाने पर महत्वपूर्ण सटीक हानि से ग्रस्त हैं। ऐसे मुद्दों को कम करने के लिए 8087 में आंतरिक रजिस्टरों को 80-बिट विस्तारित सटीक प्रारूप में मध्यवर्ती परिणाम रखने के लिए डिज़ाइन किया गया था। कंप्यूटर मेमोरी से फ़्लोटिंग-पॉइंट रजिस्टरों को लोड करते समय 8087 स्वचालित रूप से संख्याओं को इस प्रारूप में परिवर्तित कर देता है और रजिस्टरों को वापस स्मृति में संग्रहीत करते समय परिणामों को अधिक पारंपरिक स्वरूपों में परिवर्तित कर देता है। इंटरमीडिएट सबएक्सप्रेशन परिणामों को विस्तारित सटीक स्क्रैच चर में सहेजा जा सकता है और प्रोग्रामिंग लैंग्वेज स्टेटमेंट्स में जारी रखा जा सकता है, और अन्यथा बाधित गणनाओं को फिर से शुरू करने के लिए जहां वे बाधित थे, यह निर्देश (कंप्यूटर विज्ञान) प्रदान करता है जो इन आंतरिक रजिस्टरों और मेमोरी के बीच मूल्यों को स्थानांतरित किए बिना स्थानांतरित करता है। रूपांतरण, जो गणना के लिए विस्तारित प्रारूप तक पहुंच को सक्षम बनाता है[lower-alpha 2] - ऐसी संख्याओं के कार्यों की सटीकता के मुद्दे को भी पुनर्जीवित करना, लेकिन उच्च सटीकता पर।

बाद के सभी x86 प्रोसेसर पर फ़्लोटिंग-पॉइंट यूनिट (FPU) ने इस प्रारूप का समर्थन किया है। नतीजतन, सॉफ्टवेयर विकसित किया जा सकता है जो इस प्रारूप द्वारा प्रदान की जाने वाली उच्च परिशुद्धता का लाभ उठाता है। विलियम कहाँ, x87 अंकगणित के एक प्राथमिक डिजाइनर और प्रारंभिक IEEE 754 मानक प्रस्ताव x87 फ़्लोटिंग पॉइंट के विकास पर नोट करता है: एक विस्तारित प्रारूप जितना चौड़ा (80 बिट) था, उसे 13 दशमलव के समान समर्थन भूमिका निभाने के लिए शामिल किया गया था आंतरिक प्रारूप Hewlett-Packard के 10 दशमलव कैलकुलेटर में कार्य करता है।[10] इसके अलावा, कहान ने नोट किया कि 64 बिट्स सबसे व्यापक महत्व थे और 8087 पर चक्र समय को बढ़ाए बिना प्रसार किया जा सकता था,[11] और यह कि x87 विस्तारित परिशुद्धता भविष्य के प्रोसेसर में उच्च परिशुद्धता के लिए विस्तार योग्य होने के लिए डिज़ाइन की गई थी: अभी के लिए विस्तारित परिशुद्धता#x86 विस्तारित प्रेसिजन प्रारूप|10-बाइट विस्तारित प्रारूप अतिरिक्त-सटीक अंकगणित के मूल्य और मूल्य के बीच एक सहनीय समझौता है इसे तेजी से चलाने के लिए लागू करना; बहुत जल्द सटीकता के दो और बाइट सहनीय हो जाएंगे, और अंतत: चौगुनी-परिशुद्धता फ़्लोटिंग-पॉइंट फ़ॉर्मेट|16 बाइट फ़ॉर्मेट। ... व्यापक सटीकता की दिशा में इस तरह का क्रमिक विकास पहले से ही देखा जा रहा था जब IEEE 754|फ्लोटिंग-पॉइंट अंकगणित के लिए IEEE मानक 754 तैयार किया गया था।[12] Motorola 68881 मैथ को-प्रोसेसर और Motorola 68040 और Motorola 68060 प्रोसेसर समान 64-बिट महत्व और विस्तारित सटीक प्रकार का समर्थन करते हैं (इंटेल प्रारूप के समान हालांकि 96-बिट प्रारूप में गद्देदार होते हैं, जिसमें एक्सपोनेंट और महत्व क्षेत्रों के बीच 16 अप्रयुक्त बिट्स डाले जाते हैं[13]). फॉलो-ऑन फ्रीस्केल कोल्डफायर प्रोसेसर इस 96-बिट विस्तारित सटीक प्रारूप का समर्थन नहीं करते हैं।[14] शुरुआती एआरएम वास्तुकला प्रोसेसर के लिए FPA10 गणित कोप्रोसेसर भी इस विस्तारित परिशुद्धता प्रकार का समर्थन करता है (इंटेल प्रारूप के समान हालांकि साइन और एक्सपोनेंट फ़ील्ड के बीच 16 शून्य बिट्स के साथ 96-बिट प्रारूप में पैडेड होता है), लेकिन सही गोलाई के बिना।[15] x87 और Motorola 68881 80-बिट फ़ॉर्मैट IEEE 754 डबल एक्सटेंडेड फ़ॉर्मेट की ज़रूरतों को पूरा करते हैं,[16] जैसा IEEE 754 Quadruple-परिशुद्धता फ़्लोटिंग-पॉइंट फ़ॉर्मैट|128-बिट फ़ॉर्मैट में होता है।

x86 विस्तारित परिशुद्धता प्रारूप

x86 विस्तारित सटीक प्रारूप एक 80-बिट प्रारूप है जिसे पहले Intel 8087 गणित कोप्रोसेसर में लागू किया गया था और यह x86 आर्किटेक्चर पर आधारित सभी प्रोसेसर द्वारा समर्थित है जो फ्लोटिंग-पॉइंट यूनिट (FPU) को शामिल करता है। यह 80-बिट प्रारूप महत्व के संकेत के लिए एक बिट का उपयोग करता है, एक्सपोनेंट फ़ील्ड के लिए 15 बिट्स (यानी 128-बिट चौगुनी-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप के समान सीमा) और महत्व के लिए 64 बिट्स। घातांक क्षेत्र 16383 से अधिक-एन है, जिसका अर्थ है कि 16383 को घातांक क्षेत्र में मान से घटाया जाना है ताकि 2 की वास्तविक शक्ति की गणना की जा सके।[17] 32767 (सभी पंद्रह बिट्स 1) का एक प्रतिपादक फ़ील्ड मान आरक्षित है ताकि अनंत और NaN जैसे विशेष राज्यों के प्रतिनिधित्व को सक्षम किया जा सके। यदि घातांक क्षेत्र शून्य है, तो मान एक असामान्य संख्या है और 2 का घातांक -16382 है।[18]

X86 Extended Floating Point Format.svgनिम्न तालिका में, s चिह्न बिट का मान है (0 का अर्थ धनात्मक है, 1 का अर्थ ऋणात्मक है), e एक धनात्मक पूर्णांक के रूप में व्याख्या किए गए घातांक क्षेत्र का मान है, और m एक धनात्मक बाइनरी संख्या के रूप में समझा गया महत्व है जहाँ द्विआधारी बिंदु बिट 63 और 62 के बीच स्थित है। एम फ़ील्ड उपरोक्त आरेख में पूर्णांक और अंश भागों का संयोजन है।

Interpretation of the fields of an x86 Extended Precision value
Exponent Significand Meaning
All Zeros Bit 63 Bits 62-0
Zero Zero Zero. The sign bit gives the sign of the zero.
Non-zero Denormal. The value is (−1)s × m × 2−16382
One Anything Pseudo Denormal. The 80387 and later properly interpret this value but will not generate it. The value is (−1)s × m × 2−16382
All Ones Bits 63,62 Bits 61-0
00 Zero Pseudo-Infinity. The sign bit gives the sign of the infinity. The 8087 and 80287 treat this as Infinity. The 80387 and later treat this as an invalid operand.
Non-zero Pseudo Not a Number. The sign bit is meaningless. The 8087 and 80287 treat this as a Signaling Not a Number. The 80387 and later treat this as an invalid operand.
01 Anything Pseudo Not a Number. The sign bit is meaningless. The 8087 and 80287 treat this as a Signaling Not a Number. The 80387 and later treat this as an invalid operand.
10 Zero Infinity. The sign bit gives the sign of the infinity. The 8087 and 80287 treat this as a Signaling Not a Number. The 8087 and 80287 coprocessors used the pseudo-infinity representation for infinities.
Non-zero Signalling Not a Number, the sign bit is meaningless.
11 Zero Floating-point Indefinite, the result of invalid calculations such as square root of a negative number, logarithm of a negative number, 0/0, infinity / infinity, infinity times 0, and others when the processor has been configured to not generate exceptions for invalid operands. The sign bit is meaningless. This is a special case of a Quiet Not a Number.
Non-zero Quiet Not a Number, the sign bit is meaningless. The 8087 and 80287 treat this as a Signaling Not a Number.
All other values Bit 63 Bits 62-0
Zero Anything Unnormal. Only generated on the 8087 and 80287. The 80387 and later treat this as an invalid operand. The value is (−1)s × m × 2e−16383
One Anything Normalized value. The value is (−1)s × m × 2e−16383

एकल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप और डबल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप | डबल-परिशुद्धता स्वरूपों के विपरीत, यह प्रारूप एक निहित/छिपे हुए बिट का उपयोग नहीं करता है। बल्कि, बिट 63 में महत्व का पूर्णांक भाग होता है और बिट्स 62-0 में भिन्नात्मक भाग होता है। बिट 63 सभी सामान्यीकृत संख्याओं पर 1 होगा। जब 8087 को विकसित किया जा रहा था तो इस डिजाइन के कई फायदे थे:

  • यदि महत्व के सभी बिट रजिस्टर में मौजूद हैं तो गणना थोड़ी तेजी से पूरी की जा सकती है।
  • 64-बिट का महत्व परिशुद्धता के नुकसान से बचने के लिए पर्याप्त सटीकता प्रदान करता है जब परिणामों को बड़ी संख्या में मामलों में डबल-परिशुद्धता प्रारूप में परिवर्तित किया जाता है।
  • यह प्रारूप अंडरफ्लो के कारण होने वाले सटीक नुकसान को इंगित करने के लिए एक तंत्र प्रदान करता है जिसे आगे के संचालन के माध्यम से किया जा सकता है। उदाहरण के लिए, गणना 2×10−4930 × 3×10−10 × 4×1020 मध्यवर्ती परिणाम उत्पन्न करता है 6×10−4940 जो कि असामान्य है और इसमें सटीक नुकसान भी शामिल है। सभी शर्तों का उत्पाद है 24×10−4920 जिसे सामान्यीकृत संख्या के रूप में दर्शाया जा सकता है। 80287#80287 इस गणना को पूरा कर सकता है और एक असामान्य परिणाम (एक्सपोनेंट 0 नहीं, बिट 63 = 0) लौटाकर परिशुद्धता के नुकसान का संकेत दे सकता है।[19][20] X87#80387 के बाद से प्रोसेसर अब असामान्य उत्पन्न नहीं करते हैं और संचालन के लिए असामान्य इनपुट का समर्थन नहीं करते हैं। यदि अंडरफ्लो होता है तो वे असामान्य उत्पन्न करेंगे लेकिन सामान्यीकृत परिणाम उत्पन्न करेंगे यदि असामान्य पर बाद के संचालन सामान्यीकृत किए जा सकते हैं।[21]


उपयोग का परिचय

80-बिट फ्लोटिंग-पॉइंट प्रारूप 1984 तक व्यापक रूप से उपलब्ध था,[22] सी, फोरट्रान और इसी तरह की कंप्यूटर भाषाओं के विकास के बाद, जो शुरू में केवल सामान्य 32- और 64-बिट फ़्लोटिंग-पॉइंट आकार की पेशकश करते थे। X86 आर्किटेक्चर पर अधिकांश C (प्रोग्रामिंग लैंग्वेज) कंपाइलर अब लंबा डबल टाइप के माध्यम से 80-बिट विस्तारित परिशुद्धता का समर्थन करते हैं, और यह C99 / C11 (C मानक संशोधन) मानकों (IEC 60559 फ्लोटिंग-पॉइंट अंकगणित (अनुबंध F) में निर्दिष्ट किया गया था। ). अन्य भाषाओं के लिए x86 पर कंपाइलर्स अक्सर विस्तारित सटीकता का भी समर्थन करते हैं, कभी-कभी गैर-मानक एक्सटेंशन के माध्यम से: उदाहरण के लिए, टर्बो पास्कल एक प्रदान करता है extended टाइप, और कई फोरट्रान कंपाइलर्स में a REAL*10 प्रकार (के अनुरूप REAL*4 और REAL*8). इस तरह के कंपाइलर्स में आमतौर पर उनके मानक पुस्तकालय (कंप्यूटर विज्ञान) में विस्तारित-सटीक गणितीय सबरूटीन्स शामिल होते हैं, जैसे कि वर्गमूल और त्रिकोणमितीय कार्य।

कार्य सीमा

80-बिट फ़्लोटिंग-पॉइंट प्रारूप में लगभग 3.65 × 10 से एक सीमा (असामान्य संख्या सहित) है−4951 से 1.18×104932 । हालांकि लॉग10(264) ≅ 19.266, इस प्रारूप को आमतौर पर सटीकता के लगभग अठारह महत्वपूर्ण अंक (लॉग की मंजिल) देने के रूप में वर्णित किया गया है10(263), न्यूनतम गारंटीशुदा परिशुद्धता)। बाइनरी के बारे में बात करते समय दशमलव का उपयोग दुर्भाग्यपूर्ण है क्योंकि अधिकांश दशमलव अंश बाइनरी में आवर्ती अनुक्रम होते हैं जैसे 2/3 दशमलव में होता है। इस प्रकार, 10.15 जैसे मान को वास्तविक * 4 के लिए दशमलव में 10.1499996185 आदि के बराबर बाइनरी में दर्शाया गया है, लेकिन 10.15000000000000035527आदि। REAL*8 में: अंतररूपांतरण में सन्निकटन शामिल होगा सिवाय उन कुछ दशमलव अंशों के जो एक सटीक बाइनरी मान का प्रतिनिधित्व करते हैं, जैसे कि 0.625। REAL*10 के लिए, दशमलव स्ट्रिंग 10.1499999999999999996530553etc है। अंतिम 9 अंक अठारहवाँ भिन्नात्मक अंक है और इस प्रकार स्ट्रिंग का बीसवाँ महत्वपूर्ण अंक है। 80-बिट प्रारूप के लिए दशमलव और बाइनरी के बीच रूपांतरण पर सीमाएं निम्नानुसार दी जा सकती हैं: यदि अधिकतम 18 महत्वपूर्ण अंकों वाली दशमलव स्ट्रिंग को 80-बिट IEEE 754 बाइनरी फ़्लोटिंग-पॉइंट मान (इनपुट के अनुसार) पर सही ढंग से गोल किया जाता है, तो महत्वपूर्ण दशमलव अंकों (आउटपुट के लिए) की समान संख्या में परिवर्तित, फिर अंतिम स्ट्रिंग मूल से बिल्कुल मेल खाएगी; जबकि, इसके विपरीत, यदि एक 80-बिट IEEE 754 बाइनरी फ़्लोटिंग-प्वाइंट मान को सही ढंग से परिवर्तित किया जाता है और (निकटतम) कम से कम 21 महत्वपूर्ण दशमलव अंकों के साथ एक दशमलव स्ट्रिंग में गोल किया जाता है, तो वापस बाइनरी प्रारूप में परिवर्तित किया जाता है, यह मूल रूप से बिल्कुल मेल खाएगा।[16]उच्च सटीकता के लिए सूत्रों में स्थिरांक के लिए सर्वोत्तम मान निर्दिष्ट करते समय ये सन्निकटन विशेष रूप से परेशानी वाले होते हैं, जैसा कि मनमाने ढंग से सटीक अंकगणित#अनुप्रयोग|मनमानी-सटीक अंकगणित के माध्यम से गणना की जा सकती है।

=== 80-बिट प्रारूप === की आवश्यकता है विस्तारित परिशुद्धता प्रारूप के महत्व में न्यूनतम 64 बिट परिशुद्धता की आवश्यकता का एक उल्लेखनीय उदाहरण डबल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप|डबल-परिशुद्धता मानों पर एक्सपोनेंटिएशन करते समय सटीक हानि से बचने की आवश्यकता है।[23][24][25][lower-alpha 3] x86 फ़्लोटिंग-पॉइंट इकाइयाँ एक निर्देश प्रदान नहीं करती हैं जो सीधे घातांक करता है। इसके बजाय वे निर्देशों का एक सेट प्रदान करते हैं जो एक प्रोग्राम समीकरण का उपयोग करके घातांक करने के क्रम में उपयोग कर सकता है:

सटीक नुकसान से बचने के लिए, मध्यवर्ती परिणामlog2(x) औरy·log2(x) की गणना बहुत अधिक सटीकता के साथ की जानी चाहिए, क्योंकि प्रभावी रूप से दोनों के प्रतिपादक और महत्व के क्षेत्र x मध्यवर्ती परिणाम के महत्व क्षेत्र में फिट होना चाहिए। इसके बाद, मध्यवर्ती परिणाम के महत्व क्षेत्र को अंतिम परिणाम के घातांक और महत्व क्षेत्रों के बीच विभाजित किया जाता है जब 2intermediate result परिकलित। निम्नलिखित चर्चा इस आवश्यकता का अधिक विस्तार से वर्णन करती है।

थोड़े अनपैकिंग के साथ, IEEE 754 डबल-प्रिसिजन फ्लोटिंग-पॉइंट फॉर्मेट | डबल-प्रिसिजन वैल्यू को इस प्रकार दर्शाया जा सकता है:

कहाँ s घातांक का चिह्न है (या तो 0 या 1), E निष्पक्ष एक्सपोनेंट है, जो एक पूर्णांक है जो 0 से 1023 तक है, और M महत्व है जो 53-बिट मान है जो सीमा में आता है 1 ≤ M < 2. ऋणात्मक संख्याओं और शून्य को अनदेखा किया जा सकता है क्योंकि इन मानों का लघुगणक अपरिभाषित है। इस चर्चा के प्रयोजनों के लिए M में 53 बिट सटीकता नहीं है क्योंकि यह एक से अधिक या उसके बराबर होने के लिए विवश है, अर्थात छिपा हुआ बिट सटीकता की ओर नहीं गिना जाता है (ध्यान दें कि ऐसी स्थितियों में जहां M 1 से कम है, मान वास्तव में एक डी-नॉर्मल है और इसलिए पहले से ही सटीक नुकसान हो सकता है। यह स्थिति इस लेख के दायरे से बाहर है)।

एक डबल-सटीक फ़्लोटिंग-पॉइंट प्रारूप के इस प्रतिनिधित्व का लॉग लेना | निम्नलिखित में डबल-परिशुद्धता संख्या और सरलीकरण परिणाम:

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

क्योंकि E 0 से 1023 की श्रेणी में एक पूर्णांक है, मूलांक बिंदु के बाईं ओर 10 बिट तक लघुगणक के पूर्णांक भाग का प्रतिनिधित्व करने के लिए आवश्यक हैं। क्योंकि M के दायरे में आता है 1 ≤ M < 2, का मान है log2 M के दायरे में आएगा 0 ≤ log2 M < 1 इसलिए लघुगणक के भिन्नात्मक भाग का प्रतिनिधित्व करने के लिए मूलांक बिंदु के दाईं ओर कम से कम 52 बिट्स की आवश्यकता होती है। रेडिक्स बिंदु के बाईं ओर 10 बिट्स को रेडिक्स बिंदु के दाईं ओर 52 बिट्स के साथ संयोजित करने का अर्थ है कि लघुगणक के महत्व भाग की गणना कम से कम 62 बिट्स सटीकता के लिए की जानी चाहिए। व्यवहार में के मूल्य M से कम रेडिक्स बिंदु और के मूल्यों के दाईं ओर 53 बिट्स की आवश्यकता है M से कम सटीक हानि से बचने के लिए मूलांक बिंदु के दाईं ओर 54 बिट्स की आवश्यकता होती है। रेडिक्स बिंदु के दाईं ओर अतिरिक्त सटीकता के लिए इस आवश्यकता को संतुलित करने के लिए, 512 से कम के घातांक को मूलांक बिंदु के बाईं ओर केवल 9 बिट की आवश्यकता होती है और 256 से कम के घातांक को मूलांक बिंदु के बाईं ओर केवल 8 बिट की आवश्यकता होती है।

घातांक गणना का अंतिम भाग कंप्यूटिंग है 2intermediate result. मध्यवर्ती परिणाम में एक पूर्णांक भाग होता हैI भिन्नात्मक भाग में जोड़ा गयाF . यदि मध्यवर्ती परिणाम नकारात्मक है तो एक सकारात्मक भिन्नात्मक भाग प्राप्त करने के लिए एक मामूली समायोजन की आवश्यकता होती है क्योंकि दोनोंI औरF ऋणात्मक संख्याएँ हैं।

सकारात्मक मध्यवर्ती परिणामों के लिए:

नकारात्मक मध्यवर्ती परिणामों के लिए:

इस प्रकार मध्यवर्ती परिणाम का पूर्णांक भाग (I याI−1 ) साथ ही एक पूर्वाग्रह अंतिम परिणाम का प्रतिपादक बन जाता है और मध्यवर्ती परिणाम का सकारात्मक आंशिक भाग बदल जाता है: 2F या 21+F अंतिम परिणाम का महत्व बन जाता है। अंतिम परिणाम के लिए 52 बिट्स सटीकता प्रदान करने के लिए, सकारात्मक भिन्नात्मक भाग को कम से कम 52 बिट्स तक बनाए रखा जाना चाहिए।

अंत में, मध्यवर्ती परिणाम के महत्व में आवश्यक परिशुद्धता के बिट्स की सटीक संख्या कुछ हद तक डेटा पर निर्भर है लेकिन 64 बिट्स घातांक अभिकलन के विशाल बहुमत में सटीक हानि से बचने के लिए पर्याप्त है जिसमें डबल-परिशुद्धता फ्लोटिंग-पॉइंट प्रारूप|डबल-परिशुद्धता शामिल है। नंबर।

विस्तारित सटीक प्रारूप के प्रतिपादक के लिए आवश्यक बिट्स की संख्या इस आवश्यकता से होती है कि विस्तारित प्रारूप का उपयोग करते हुए गणना करते समय दो डबल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप | डबल-परिशुद्धता संख्या का उत्पाद अतिप्रवाह नहीं होना चाहिए। डबल-प्रिसिजन फ्लोटिंग-पॉइंट फॉर्मेट का सबसे बड़ा संभव एक्सपोनेंट | डबल-प्रिसिजन वैल्यू 1023 है, इसलिए दो डबल-प्रेसिजन फ्लोटिंग-पॉइंट फॉर्मेट के सबसे बड़े संभावित उत्पाद का एक्सपोनेंट | डबल-प्रिसिजन नंबर 2047 है (एक 11-बिट मान ). ऋणात्मक घातांकों के खाते में पूर्वाग्रह जोड़ने का अर्थ है कि घातांक फ़ील्ड कम से कम 12 बिट चौड़ा होना चाहिए।

इन आवश्यकताओं का संयोजन: साइन के लिए 1 बिट, बायस्ड एक्सपोनेंट के लिए 12 बिट, और महत्व के लिए 64 बिट का मतलब है कि विस्तारित सटीक प्रारूप में कम से कम 77 बिट्स की आवश्यकता होगी। इंजीनियरिंग के विचारों के परिणामस्वरूप 80-बिट प्रारूप की अंतिम परिभाषा हुई (विशेष रूप से आईईईई 754 मानक को अगले सबसे बड़े, चौगुनी-सटीक फ़्लोटिंग-पॉइंट प्रारूप, सटीक प्रारूप जो कि 15 है, से मिलान करने के लिए विस्तारित सटीक प्रारूप की एक्सपोनेंट श्रेणी की आवश्यकता होती है। बिट्स)।[24]

गणना का एक और उदाहरण जो विस्तारित सटीक अंकगणित से लाभान्वित होता है, पुनरावृत्त शोधन योजनाएँ हैं, जिनका उपयोग अप्रत्यक्ष रूप से संख्यात्मक रैखिक बीजगणित के लिए की गई गणनाओं की बहुत बड़ी संख्या के दौरान प्रत्यक्ष समाधान में संचित त्रुटियों को साफ करने के लिए किया जाता है।[27]


भाषा समर्थन

यह भी देखें

  • जीएनयू एमपीएफआर - सी के लिए जीएनयू मल्टीपल प्रिसिजन फ्लोटिंग-पॉइंट रिलायबल लाइब्रेरी
  • आईबीएम हेक्साडेसिमल फ्लोटिंग-पॉइंट
  • आईईईई 754
  • लंबा डबल
  • x87

फुटनोट्स

  1. "This format is intended mainly to help programmers enhance the integrity of their single and double software, and to attenuate degradation by round-off in double matrix computations of larger dimensions, and can easily be used in such a way that substituting quadruple for extended need never invalidate its use." — x87 designer W. Kahan[6]
  2. "High-level languages will use extended (invisibly) to evaluate intermediate sub-expressions, and later may provide extended as a declarable data type."[9]: 70 
  3. "The presence of at least as many extra bits of precision in extended as in the exponent field of the basic format it supports greatly simplifies the accurate computation of the transcendental functions, inner products, and the power function yx."[26]: 70 

संदर्भ

  1. IEEE 754 (2008, ¶ 2.1.21) defines extended precision format as "A format that extends a supported basic format by providing wider precision and range."
  2. {{cite press release |last=Francis |first=C.G. |title=आईबीएम ने पेश किया शक्तिशाली छोटा कंप्यूटर|date=11 February 1965 |publisher=International Business Machines Corporation (IBM) |department=Director of Information |place=White Plains, New York |url=http://www.ibm1130.net/1130Release.html |url-status=dead |archive-url=https://web.archive.org/web/20190705200515/http://www.ibm1130.net/1130Release.html |archive-date=2019-07-05}
  3. Steil, Michael (2008-10-20). "6502 के लिए माइक्रोसॉफ्ट बेसिक का अपना संस्करण बनाएं". pagetable.com. p. 46. Archived from the original on 2016-05-30. Retrieved 2016-05-30.
  4. IEEE Computer Society (August 29, 2008). फ़्लोटिंग-पॉइंट अंकगणित के लिए IEEE मानक (Report). IEEE. §3.7. doi:10.1109/IEEESTD.2008.4610935. ISBN 978-0-7381-5752-8. IEEE Std 754-2008.
  5. Brewer, Kevin. "Kevin's Report". IEEE-754 Reference Material. Retrieved 2012-02-19.
  6. Kahan, William (1 October 1997). "Lecture notes on the status of IEEE standard 754 for binary floating-point arithmetic" (PDF). p. 5.
  7. Einarsson, Bo (2005). वैज्ञानिक कंप्यूटिंग में सटीकता और विश्वसनीयता. SIAM. pp. 9ff. ISBN 978-0-89871-815-7. Retrieved 3 May 2013.
  8. "Intel 64 and IA-32 Architectures". Software Developer's Manual. Intel Corp. March 2012. §8.2.
  9. Coonen, Jerome T. (January 1980). "An implementation guide to a proposed standard for floating-point arithmetic". IEEE Computer. 13: 68–79. doi:10.1109/MC.1980.1653344. S2CID 206445847.
  10. Kahan, William (22 November 1983). "Mathematics written in sand - the hp-15C, Intel 8087, etc" (PDF).
  11. Goldberg, David (March 1991). "फ़्लोटिंग-पॉइंट अंकगणित के बारे में प्रत्येक कंप्यूटर वैज्ञानिक को क्या पता होना चाहिए" (PDF). ACM Computing Surveys. 23 (1): 192. doi:10.1145/103162.103163. S2CID 222008826.
  12. Higham, Nicholas (2002). "Designing stable algorithms". न्यूमेरिकल एल्गोरिदम की सटीकता और स्थिरता (2 ed.). Society for Industrial and Applied Mathematics (SIAM). p. 43.
  13. Motorola MC68000 Family (PDF). Programmers' Reference Manual. Freescale Semiconductor. 1992. pp. 1–16.
  14. कोल्डफायर परिवार (PDF). Programmers' Reference Manual. Freescale semiconductor. 2005. p. 7-7.
  15. "FPA10 डाटा शीट" (PDF). chrisacorns.computinghistory.org.uk. GEC Plessey Semiconductors. 11 June 1993. Retrieved 26 November 2020.
  16. 16.0 16.1 Kahan, William (1 October 1997). "Lecture notes on the status of IEEE standard 754 for binary floating-point arithmetic" (PDF).
  17. Intel 80C187 datasheet
  18. Intel 64 and IA-32 Architectures Developer's Manual: Vol. 1. Intel Corporation. pp. 4-6 thru 4-9 and 4-18 thru 4-21.
  19. Palmer, John F.; Morse, Stephen P. (1984). The 8087 Primer. Wiley Press. pp. 14. ISBN 0-471-87569-4.
  20. Morse, Stephen P.; Albert, Douglas J. (1986). The 80286 Architecture. Wiley Press. pp. 91–111. ISBN 0-471-83185-9.
  21. Intel 64 and IA-32 Architectures Developer's Manual: Vol. 1. Intel Corporation. pp. 8-21 thru 8-22.
  22. Charles Severance (20 February 1998). "फ्लोटिंग-प्वाइंट के ओल्ड मैन के साथ एक साक्षात्कार".
  23. Palmer, John F.; Morse, Stephen P. (1984). The 8087 Primer. Wiley Press. pp. 16. ISBN 0-471-87569-4.
  24. 24.0 24.1 Morse, Stephen P.; Albert, Douglas J. (1986). The 80286 Architecture. Wiley Press. pp. 96–98. ISBN 0-471-83185-9.
  25. Hough, David (March 1981). "Applications of the proposed IEEE 754 standard for floating-point arithmetic". IEEE Computer. 14 (3): 70–74. doi:10.1109/C-M.1981.220381. S2CID 14645749.
  26. Coonen, Jerome T. (January 1980). "An implementation guide to a proposed standard for floating-point arithmetic". IEEE Computer: 68–79. doi:10.1109/MC.1980.1653344. S2CID 206445847.
  27. Demmel, James; Hida, Yozo; Kahan, William; Li, Xiaoye S.; Mukherjee, Sonil; Riedy, E. Jason (June 2006). "अति-सटीक पुनरावृत्त शोधन से त्रुटि सीमा" (PDF). ACM Transactions on Mathematical Software. 32 (2): 325–351. doi:10.1145/1141885.1141894. S2CID 1340891. Retrieved 2014-04-18.
  28. "Floating Types (Using the GNU Compiler Collection (GCC))".