दशमलव चल बिन्दु: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 19: Line 19:
माइक्रोसॉफ्ट सी #, या . नेट, प्रणाली.दशमलव का उपयोग करता है।<ref>{{cite web|url=http://www.yoda.arachsys.com/csharp/decimal.html|title=Decimal floating point in .NET|website=Yoda.arachsys.com}}</ref>
माइक्रोसॉफ्ट सी #, या . नेट, प्रणाली.दशमलव का उपयोग करता है।<ref>{{cite web|url=http://www.yoda.arachsys.com/csharp/decimal.html|title=Decimal floating point in .NET|website=Yoda.arachsys.com}}</ref>
== आईईई 754-2008 एन्कोडिंग ==
== आईईई 754-2008 एन्कोडिंग ==


आईईई 754-2008 मानक 32-, 64- और 128-बिट दशमलव फ़्लोटिंग-पॉइंट प्रस्तुतियों को परिभाषित करता है। बाइनरी फ़्लोटिंग-पॉइंट स्वरूपों के प्रकार, संख्या को चिन्ह, प्रतिपादक और [[महत्व]] में विभाजित किया जाता है। बाइनरी फ़्लोटिंग-पॉइंट के विपरीत, संख्याएँ आवश्यक रूप से सामान्यीकृत नहीं होती हैं; कुछ [[महत्वपूर्ण अंक]] वाले मानों के कई संभावित प्रतिनिधित्व हैं: 1×10<sup>2</sup>=0.1×10<sup>3</sup>=0.01×10<sup>4</sup>, आदि। जब महत्व शून्य है, तो घातांक का कोई भी मान हो सकता है।
आईईई 754-2008 मानक 32-, 64- और 128-बिट दशमलव फ़्लोटिंग-पॉइंट प्रस्तुतियों को परिभाषित करता है। बाइनरी फ़्लोटिंग-पॉइंट स्वरूपों के प्रकार, संख्या को चिन्ह, प्रतिपादक और [[महत्व]] में विभाजित किया जाता है। बाइनरी फ़्लोटिंग-पॉइंट के विपरीत, संख्याएँ आवश्यक रूप से सामान्यीकृत नहीं होती हैं; कुछ [[महत्वपूर्ण अंक]] वाले मानों के कई संभावित प्रतिनिधित्व हैं: 1×10<sup>2</sup>=0.1×10<sup>3</sup>=0.01×10<sup>4</sup>, आदि। जब महत्व शून्य है, तो घातांक का कोई भी मान हो सकता है।
Line 94: Line 93:
</syntaxhighlight>इसमें उपसामान्य संख्याएं सम्मिलित हैं जहां प्रमुख महत्व और अंक 0 है।
</syntaxhighlight>इसमें उपसामान्य संख्याएं सम्मिलित हैं जहां प्रमुख महत्व और अंक 0 है।


यदि साइन बिट के बाद 2 बिट्स 11 हैं, तो 8-बिट घातांक फ़ील्ड को 2 बिट्स को दाईं ओर स्थानांतरित कर दिया जाता है (साइन बिट और उसके बाद 11 बिट्स दोनों के बाद), और प्रतिनिधित्व महत्व शेष 21 बिट्स में है। इस स्थितियों में वास्तविक महत्व में 3-बिट अनुक्रम 100 का अंतर्निहित (जो संग्रहीत नहीं है) है:
यदि साइन बिट के बाद 2 बिट्स 11 हैं, तो 8-बिट घातांक फ़ील्ड को 2 बिट्स को दाईं ओर स्थानांतरित कर दिया जाता है (साइन बिट और उसके बाद 11 बिट्स दोनों के बाद), और प्रतिनिधित्व महत्व शेष 21 बिट्स में है। इस स्थितियों में वास्तविक महत्व में 3-बिट अनुक्रम 100 का अंतर्निहित (जो संग्रहीत नहीं है) है:<syntaxhighlight lang="d">
 
s 1100eeeeee (100)t tttttttttt tttttttttt
<पूर्व>
s 1101eeeeee (100)t tttttttttt tttttttttt
एस 1100eeeeee (100) टी ttttttttttttttttttttttttttttttttttttttttttttt
s 1110eeeeee (100)t tttttttttt tttttttttt
एस 1101eeeeee (100) टी tttttttttt ttttttttttt
</syntaxhighlight>साइन बिट के बाद 11 2-बिट अनुक्रम इंगित करता है कि महत्व के लिए अंतर्निहित 100 3-बिट उपसर्ग है।
एस 1110eeeeee (100) टी tttttttttt ttttttttttt
</पूर्व>
 
साइन बिट के बाद 11 2-बिट अनुक्रम इंगित करता है कि महत्व के लिए अंतर्निहित 100 3-बिट उपसर्ग है।


ध्यान दें कि महत्व क्षेत्र के प्रमुख बिट्स सबसे महत्वपूर्ण दशमलव अंक को एनकोड नहीं करते हैं; वे बस बड़ी शुद्ध-द्विआधारी संख्या का हिस्सा हैं। उदाहरण के लिए, का महत्व {{gaps|8|000|000}} बाइनरी के रूप में एन्कोड किया गया है {{gaps|0111|1010000100|1000000000}}अग्रणी 4 बिट्स एन्कोडिंग 7 के साथ; पहला महत्व जिसके लिए 24 बिट की आवश्यकता होती है (और इस प्रकार दूसरा एन्कोडिंग फॉर्म) 2 है<sup>23</sup> = {{gaps|8|388|608}}.
ध्यान दें कि महत्व क्षेत्र के प्रमुख बिट्स सबसे महत्वपूर्ण दशमलव अंक को एनकोड नहीं करते हैं; वे बस बड़ी शुद्ध-द्विआधारी संख्या का हिस्सा हैं। उदाहरण के लिए, {{gaps|8|000|000}} के महत्व को बाइनरी {{gaps|0111|1010000100|1000000000}} के रूप में एन्कोड किया गया है जिसमे अग्रणी 4 बिट्स एन्कोडिंग 7 के साथ हैं; पहला महत्व जिसके लिए 24 बिट की आवश्यकता होती है (और इस प्रकार दूसरा एन्कोडिंग फॉर्म) वह 2<sup>23</sup> = {{gaps|8|388|608}} है.


उपरोक्त मामलों में, प्रतिनिधित्व मान है:
उपरोक्त मामलों में, प्रतिनिधित्व मान है:


: (−1)<sup>साइन करें</sup> × 10<sup>घातांक−101</sup> × महत्व
: (−1)<sup>साइन</sup> × 10<sup>घातांक−101</sup> × महत्व
दशमलव64 और दशमलव128 समान रूप से कार्य करते हैं, किन्तु बड़े घातांक निरंतरता और महत्व क्षेत्रों के साथ। दशमलव128 के लिए, दूसरा एन्कोडिंग फॉर्म वास्तव में कभी उपयोग नहीं किया जाता है; 10 का सबसे बड़ा वैध महत्व<sup>34</sup>−1 = 1ED09BEAD87C0378D8E63FFFFFFFF<sub>16</sub> 113 बिट्स में प्रदर्शित किया जा सकता है।
दशमलव64 और दशमलव128 बड़े एक्सपोनेंट निरंतरता और महत्वपूर्ण क्षेत्रों के साथ समान रूप से संचालित होते हैं। दशमलव128 के लिए, दूसरा एन्कोडिंग फॉर्म वास्तव में कभी 10<sup>34</sup>−1 = 1ED09BEAD87C0378D8E63FFFFFFFF<sub>16</sub> का सबसे बड़ा वैध महत्व113 बिट्स में प्रदर्शित किया जा सकता है।


=== घनी पैक दशमलव महत्व क्षेत्र ===
=== घनी पैक दशमलव महत्व क्षेत्र ===
इस संस्करण में, महत्व को दशमलव अंकों की श्रृंखला के रूप में संग्रहीत किया जाता है। अग्रणी अंक 0 और 9 (3 या 4 बाइनरी बिट्स) के बीच है, और शेष महत्व घनी पैक दशमलव (DPD) एन्कोडिंग का उपयोग करता है।
इस संस्करण में, महत्व को दशमलव अंकों की श्रृंखला के रूप में संग्रहीत किया जाता है। अग्रणी अंक 0 और 9 (3 या 4 बाइनरी बिट्स) के बीच है, और शेष महत्व सघन पैक दशमलव (DPD) एन्कोडिंग का उपयोग करता है।


प्रतिपादक के अग्रणी 2 बिट्स और महत्व के अग्रणी अंक (3 या 4 बिट्स) को पांच बिट्स में जोड़ा जाता है जो साइन बिट का पालन करते हैं। इसके बाद फिक्स्ड-ऑफसेट घातांक कंटीन्यूअस क्षेत्र आता है।
प्रतिपादक के अग्रणी 2 बिट्स और महत्व के अग्रणी अंक (3 या 4 बिट्स) को पांच बिट्स में जोड़ा जाता है जो साइन बिट का पालन करते हैं। इसके बाद फिक्स्ड-ऑफसेट घातांक निरंतर क्षेत्र आता है।


अंत में, महत्व निरंतरता क्षेत्र 2, 5, या 11 10-बिट [[डिलेट (कंप्यूटिंग)]] से बना है, प्रत्येक 3 दशमलव अंकों को कूटबद्ध करता है।<ref name="Muller_2010">{{cite book |author-last1=Muller |author-first1=Jean-Michel |author-last2=Brisebarre |author-first2=Nicolas |author-last3=de Dinechin |author-first3=Florent |author-last4=Jeannerod |author-first4=Claude-Pierre |author-last5=Lefèvre |author-first5=Vincent |author-last6=Melquiond |author-first6=Guillaume |author-last7=Revol |author-first7=Nathalie |author7-link=Nathalie Revol|author-last8=Stehlé |author-first8=Damien |author-last9=Torres |author-first9=Serge |title=फ़्लोटिंग-प्वाइंट अंकगणित की पुस्तिका|date=2010 |publisher=[[Birkhäuser]] |edition=1 |isbn=978-0-8176-4704-9<!-- print --> |doi=10.1007/978-0-8176-4705-6 |lccn=2009939668<!-- |id=ISBN 978-0-8176-4705-6 (online), ISBN-10 0-8176-4704-X (print) --> |url=http://cds.cern.ch/record/1315760}}</रेफरी>
अंत में, महत्व निरंतरता क्षेत्र 2, 5, या 11 10-बिट [[डिलेट (कंप्यूटिंग)]] से बना है, प्रत्येक 3 दशमलव अंकों को कूटबद्ध करता है।<ref name="Muller_2010">{{cite book |author-last1=Muller |author-first1=Jean-Michel |author-last2=Brisebarre |author-first2=Nicolas |author-last3=de Dinechin |author-first3=Florent |author-last4=Jeannerod |author-first4=Claude-Pierre |author-last5=Lefèvre |author-first5=Vincent |author-last6=Melquiond |author-first6=Guillaume |author-last7=Revol |author-first7=Nathalie |author7-link=Nathalie Revol|author-last8=Stehlé |author-first8=Damien |author-last9=Torres |author-first9=Serge |title=फ़्लोटिंग-प्वाइंट अंकगणित की पुस्तिका|date=2010 |publisher=[[Birkhäuser]] |edition=1 |isbn=978-0-8176-4704-9<!-- print --> |doi=10.1007/978-0-8176-4705-6 |lccn=2009939668<!-- |id=ISBN 978-0-8176-4705-6 (online), ISBN-10 0-8176-4704-X (print) --> |url=http://cds.cern.ch/record/1315760}}</रेफरी>


यदि साइन बिट के बाद के पहले दो बिट 00 , 01 , या 10 हैं, तो वे एक्सपोनेंट के अग्रणी बिट हैं, और उसके बाद के तीन बिट्स को अग्रणी दशमलव अंक (0 से 7) के रूप में समझा जाता है:
यदि साइन बिट के बाद के पहले दो बिट 00 , 01 , या 10 हैं, तो वे एक्सपोनेंट के अग्रणी बिट हैं, और उसके बाद के तीन बिट्स को अग्रणी दशमलव अंक (0 से 7) के रूप में समझा जाता है:
रेफरी>[http://speleotrove.com/decimal/dbspec.html दशमलव एन्कोडिंग विशिष्टता, संस्करण 1.00], आईबीएम से</ref>
रेफरी>[http://speleotrove.com/decimal/dbspec.html दशमलव एन्कोडिंग विशिष्टता, संस्करण 1.00], आईबीएम से</ref><syntaxhighlight lang="d">
<पूर्व>
  Comb.  Exponent          Significand
    कंघा। घातांक महत्व
  s 00 TTT (00)eeeeee (0TTT)[tttttttttt][tttttttttt]
  एस 00 टीटीटी (00) eeeeee (0TTT) [ttttttttt] [tttttttttt]
  s 01 TTT (01)eeeeee (0TTT)[tttttttttt][tttttttttt]
  एस 01 टीटीटी (01) eeeeee (0TTT) [ttttttttt] [tttttttttt]
  s 10 TTT (10)eeeeee (0TTT)[tttttttttt][tttttttttt]
  एस 10 टीटीटी (10) eeeeee (0TTT) [ttttttttt] [tttttttttt]
</syntaxhighlight>यदि साइन बिट के बाद पहले दो बिट 11 हैं, तो दूसरे दो बिट घातांक के अग्रणी बिट हैं, और अंतिम बिट को 100 के साथ अग्रणी दशमलव अंक (8 या 9) बनाने के लिए उपसर्ग किया जाता है:<syntaxhighlight lang="d">
</पूर्व>
     Comb.  Exponent          Significand
यदि साइन बिट के बाद पहले दो बिट 11 हैं, तो दूसरे दो बिट घातांक के अग्रणी बिट हैं, और अंतिम बिट को 100 के साथ अग्रणी दशमलव अंक (8 या 9) बनाने के लिए उपसर्ग किया जाता है:
  s 1100 T (00)eeeeee (100T)[tttttttttt][tttttttttt]
 
  s 1101 T (01)eeeeee (100T)[tttttttttt][tttttttttt]
<पूर्व>
  s 1110 T (10)eeeeee (100T)[tttttttttt][tttttttttt]
     कंघा। घातांक महत्व
</syntaxhighlight>5-बिट फ़ील्ड के शेष दो संयोजन (11110 और 11111) क्रमशः ± अनंत और एनएएनएस का प्रतिनिधित्व करने के लिए उपयोग किए जाते हैं।
  एस 1100 टी (00) eeeeee (100 टी) [ttttttttt] [tttttttttt]
  एस 1101 टी (01) eeeeee (100T) [ttttttttt] [tttttttttt]
  एस 1110 टी (10) eeeeee (100T) [ttttttttt] [tttttttttt]
</पूर्व>
5-बिट फ़ील्ड के शेष दो संयोजन (11110 और 11111) क्रमशः ± अनंत और एनएएनs का प्रतिनिधित्व करने के लिए उपयोग किए जाते हैं।
 
== फ़्लोटिंग-पॉइंट अंकगणितीय ऑपरेशन ==
== फ़्लोटिंग-पॉइंट अंकगणितीय ऑपरेशन ==
फ़्लोटिंग-पॉइंट अंकगणित करने का सामान्य नियम यह है कि सटीक गणितीय मान की गणना की जाती है,<ref>Computer hardware doesn't necessarily compute the exact value; it simply has to produce the equivalent rounded result as though it had computed the infinitely precise result.</ref> और फिर परिणाम को निर्दिष्ट सटीकता में निकटतम प्रतिनिधित्व योग्य मान पर गोल किया जाता है। यह वास्तव में सामान्य राउंडिंग व्यवहार के तहत और असाधारण स्थितियों की अनुपस्थिति में आईईईई-अनुपालन कंप्यूटर हार्डवेयर के लिए अनिवार्य व्यवहार है।
फ़्लोटिंग-पॉइंट अंकगणित करने का सामान्य नियम यह है कि सटीक गणितीय मान की गणना की जाती है,<ref>Computer hardware doesn't necessarily compute the exact value; it simply has to produce the equivalent rounded result as though it had computed the infinitely precise result.</ref> और फिर परिणाम को निर्दिष्ट सटीकता में निकटतम प्रतिनिधित्व योग्य मान पर गोल किया जाता है। यह वास्तव में सामान्य राउंडिंग व्यवहार के तहत और असाधारण स्थितियों की अनुपस्थिति में आईईईई-अनुपालन कंप्यूटर हार्डवेयर के लिए अनिवार्य व्यवहार है।
Line 154: Line 143:
                       = 10<sup>5</sup> × 1.235584654
                       = 10<sup>5</sup> × 1.235584654
यह वैज्ञानिक संकेतन में परिवर्तित होने के अलावा और कुछ नहीं है।
यह वैज्ञानिक संकेतन में परिवर्तित होने के अलावा और कुछ नहीं है।
विस्तार से:
विस्तार से:


   = 5; एस = 1.234567 (123456.7)
   e = 5; s = 1.234567 (123456.7)
  + = 2; एस = 1.017654 (101.7654)
  + e = 2; s = 1.017654 (101.7654)


   = 5; एस = 1.234567
   e = 5; s = 1.234567
  + = 5; s=0.001017654 (शिफ्टिंग के बाद)
  + e = 5; s=0.001017654 (after shifting)
  --------------------
  --------------------
   = 5; s=1.235584654 (सही योग: 123558.4654)
   e = 5; s=1.235584654 (true sum: 123558.4654)


यह सही परिणाम है, ऑपरेंड का सटीक योग। इसे 7 अंकों तक गोल किया जाएगा और यदि आवश्यक हो तो सामान्य किया जाएगा। अंतिम परिणाम है:
यह सही परिणाम है जो ऑपरेंड का सटीक योग है। इसे 7 अंकों तक गोल किया जाएगा और यदि आवश्यक हो तो सामान्य किया जाएगा। अंतिम परिणाम है:
   = 5; s=1.235585 (अंतिम योग: 123558.5)
   e = 5; s=1.235585 (final sum: 123558.5)


ध्यान दें कि दूसरे ऑपरेंड (654) के निम्न 3 अंक अनिवार्य रूप से खो गए हैं। यह [[राउंड-ऑफ त्रुटि]] है। चरम मामलों में, दो गैर-शून्य संख्याओं का योग उनमें से के बराबर हो सकता है:
ध्यान दें कि दूसरे ऑपरेंड (654) के निम्न 3 अंक अनिवार्य रूप से लुप्त गए हैं। यह [[राउंड-ऑफ त्रुटि]] है। अत्यधिक मामलों में, दो गैर-शून्य संख्याओं का योग उनमें से के बराबर हो सकता है:


   = 5; एस = 1.234567
   e = 5; s = 1.234567
  + = -3; एस = 9.876543
  + e =-3;s = 9.876543


   = 5; एस = 1.234567
   e = 5; s = 1.234567
  + = 5; s=0.00000009876543 (शिफ्टिंग के बाद)
  + e = 5; s=0.00000009876543 (after shifting)
  ----------------------
  ----------------------
   = 5; s=1.23456709876543 (सही योग)
   e = 5; s=1.23456709876543 (true sum)
   = 5; s=1.234567 (पूर्णांक/सामान्यीकरण के बाद)
   e = 5; s=1.234567         (after rounding/normalization)


महत्व के नुकसान की और समस्या तब होती है जब दो लगभग समान संख्याओं के सन्निकटन को घटाया जाता है। निम्नलिखित उदाहरण में = 5; एस = 1.234571 और = 5; s=1.234567 परिमेय 123457.1467 और 123456.659 के अनुमान हैं।
महत्व के नुकसान की और समस्या तब होती है जब दो लगभग समान संख्याओं के सन्निकटन को घटाया जाता है। निम्नलिखित उदाहरण में e = 5; s = 1.234571 और e = 5; s=1.234567 परिमेय 123457.1467 और 123456.659 के अनुमान हैं।


   = 5; एस = 1.234571
   e = 5; s = 1.234571
  - = 5; एस = 1.234567
  - e = 5; s = 1.234567
  ----------------
  ----------------
   = 5; एस = 0.000004
   e = 5; s = 0.000004
   = -1; s=4.000000 (राउंडिंग और सामान्यीकरण के बाद)
   e =-1;s=4.000000 (after rounding and normalization)


फ़्लोटिंग-पॉइंट अंतर की गणना पूर्णतः इसलिए की जाती है क्योंकि संख्याएँ करीब होती हैं- [[डाई बेंज लेम्मा]] इसकी गारंटी देता है, यहां तक ​​कि अंडरफ़्लो की स्थितियों में भी जब क्रमिक अंडरफ़्लो समर्थित होता है। इसके बावजूद, मूल संख्याओं का अंतर e=−1 है; s = 4.877000, जो अंतर e = −1 से 20% से अधिक भिन्न है; s= 4.000000 सन्निकटन। चरम मामलों में, सटीकता के सभी महत्वपूर्ण अंक खो सकते हैं।<ref name="Goldberg_1991"/><ref name="Sierra_1962"/>यह आपत्तिजनक निरस्तीकरण यह मानने के खतरे को दर्शाता है कि गणना किए गए परिणाम के सभी अंक अर्थपूर्ण हैं। इन त्रुटियों के परिणामों से निपटना [[संख्यात्मक विश्लेषण]] का विषय है; #सटीकता की समस्याएं भी देखें।
फ़्लोटिंग-पॉइंट अंतर की गणना बिल्कुल इसलिए की जाती है क्योंकि संख्याएँ करीब होती हैं - [[डाई बेंज लेम्मा]] इसकी गारंटी देता है, यहां तक ​​कि अंडरफ़्लो की स्थितियों में भी जब क्रमिक अंडरफ़्लो समर्थित होता है। इसके बावजूद, मूल संख्याओं का अंतर e=−1, s = 4.877000 है; जो अंतर e = −1 से s= 4.000000अनुमानों के 20% से अधिक भिन्न है। चरम मामलों में, सटीकता के सभी महत्वपूर्ण अंक लुप्त हो सकते हैं।<ref name="Goldberg_1991" /><ref name="Sierra_1962" /> यह निरस्तीकरण यह मानने के खतरे को दर्शाता है कि गणना किए गए परिणाम के सभी अंक अर्थपूर्ण हैं। इन त्रुटियों के परिणामों से निपटना [[संख्यात्मक विश्लेषण]] का विषय है; सटीकता की समस्याएं भी देखें।


=== गुणा ===
=== गुणा ===
गुणा करने के लिए, महत्व को गुणा किया जाता है, जबकि घातांक जोड़े जाते हैं, और परिणाम को गोल और सामान्यीकृत किया जाता है।
गुणा करने के लिए, महत्व को गुणा किया जाता है, जबकि घातांक जोड़े जाते हैं, और परिणाम को गोल और सामान्यीकृत किया जाता है।


   = 3; एस = 4.734612
   e = 3; s = 4.734612
  × = 5; एस = 5.417242
  × e = 5; s = 5.417242
  --------------------------------------
  --------------------------------------
   = 8; s=25.648538980104 (वास्तविक गुणनफल)
   e = 8; s=25.648538980104 (true product)
   = 8; s=25.64854 (पूर्ण करने के बाद)
   e = 8; s=25.64854         (after rounding)
   = 9; एस = 2.564854 (सामान्यीकरण के बाद)
   e = 9; s = 2.564854       (after normalization)


विभाजन इसी प्रकार किया जाता है, किन्तु वह अधिक जटिल है।
विभाजन इसी प्रकार किया जाता है, किन्तु वह अधिक जटिल है।


गुणन या विभाजन के साथ रद्दीकरण या अवशोषण की कोई समस्या नहीं है, चूंकि छोटी त्रुटियां जमा हो सकती हैं क्योंकि संचालन बार-बार किया जाता है। व्यवहार में, जिस प्रकार से डिजिटल लॉजिक में ये ऑपरेशन किए जाते हैं वह काफी जटिल हो सकता है।
गुणन या विभाजन के साथ निरस्त्रीकरण या अवशोषण की कोई समस्या नहीं है, चूंकि छोटी त्रुटियां जमा हो सकती हैं क्योंकि संचालन बार-बार किया जाता है। व्यवहार में, जिस प्रकार से डिजिटल लॉजिक में ये ऑपरेशन किए जाते हैं वह काफी जटिल हो सकता है।


{{further|Booth's multiplication algorithm|Division algorithm}}
{{further|बूथ गुणन एल्गोरिथ्म|डिवीजन एल्गोरिदम}}
== यह भी देखें ==
== यह भी देखें ==
* [[बाइनरी-कोडित दशमलव]] (बीसीडी)
* [[बाइनरी-कोडित दशमलव]] (बीसीडी)

Revision as of 09:07, 8 February 2023

दशमलव फ़्लोटिंग-पॉइंट (डीऍफ़पी) अंकगणित दशमलव डेटा प्रकार फ़्लोटिंग-पॉइंट संख्याओं पर प्रतिनिधित्व और संचालन दोनों को संदर्भित करता है। दशमलव (आधार-10) अंशों के साथ सीधे कार्य करने से राउंडिंग त्रुटियों से बचा जा सकता है जो सामान्यतः दशमलव अंशों (मानव-प्रविष्ट डेटा में सामान्य, जैसे माप या वित्तीय जानकारी) और बाइनरी (आधार-2) अंशों के बीच परिवर्तित करते समय होती हैं।

दशमलव फिक्स्ड-पॉइंट और पूर्णांक प्रतिनिधित्व पर दशमलव फ़्लोटिंग-पॉइंट प्रतिनिधित्व का लाभ यह है कि यह मानों की विस्तृत श्रृंखला का समर्थन करता है। उदाहरण के लिए, जबकि 8 दशमलव अंक और 2 दशमलव स्थान आवंटित करने वाला निश्चित-बिंदु प्रतिनिधित्व संख्या 123456.78, 8765.43, 123.00, का प्रतिनिधित्व कर सकता है, और इसी प्रकार 8 दशमलव अंकों के साथ फ़्लोटिंग-पॉइंट प्रतिनिधित्व 1.2345678, 1234567.8, 0.000012345678, 12345678000000000, और इसी तरह का प्रतिनिधित्व कर सकता है। यह व्यापक रेंज क्रमिक गणनाओं के समय राउंडिंग त्रुटियों के संचय को बनावटी रूप से धीमा कर सकती है; उदाहरण के लिए, कहन योग एल्गोरिथम का उपयोग फ़्लोटिंग पॉइंट में कई संख्याओं को जोड़ने के लिए किया जा सकता है, जिसमें पूर्णन त्रुटि का कोई एसिम्प्टोटिक संचय नहीं होता है।

कार्यान्वयन

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

आईबीएम 650 कंप्यूटर ने 1953 में 8-अंकीय दशमलव फ़्लोटिंग-पॉइंट प्रारूप का समर्थन किया था।[1] अन्यथा बाइनरी वांग वी.एस मशीन ने 1977 में 64-बिट दशमलव फ्लोटिंग-पॉइंट प्रारूप का समर्थन किया था।[2] मोटोरोला 68040 प्रोसेसर के लिए फ्लोटिंग-पॉइंट सपोर्ट लाइब्रेरी ने 1990 में 96-बिट दशमलव फ्लोटिंग-पॉइंट स्टोरेज फॉर्मेट प्रदान किया था।[2]

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

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

आईबीएम् पॉवर6 और नए पॉवर प्रोसेसर में हार्डवेयर में डीऍफ़पी सम्मिलित है, जैसा कि आईबीएम् प्रणाली जेड9[3] (और बाद में जेडसीरीज मशीनें) में है। सिलमाइंडस सिलक्स, विन्यास योग्य वेक्टर डीऍफ़पी सहसंसाधक प्रदान करता है।[4] आईईई 754-2008 इसे और अधिक विस्तार से परिभाषित करता है। फुजित्सु में हार्डवेयर में डीऍफ़पी के साथ 64-बिट स्पार्क प्रोसेसर भी हैं।[5][2]

माइक्रोसॉफ्ट सी #, या . नेट, प्रणाली.दशमलव का उपयोग करता है।[6]

आईईई 754-2008 एन्कोडिंग

आईईई 754-2008 मानक 32-, 64- और 128-बिट दशमलव फ़्लोटिंग-पॉइंट प्रस्तुतियों को परिभाषित करता है। बाइनरी फ़्लोटिंग-पॉइंट स्वरूपों के प्रकार, संख्या को चिन्ह, प्रतिपादक और महत्व में विभाजित किया जाता है। बाइनरी फ़्लोटिंग-पॉइंट के विपरीत, संख्याएँ आवश्यक रूप से सामान्यीकृत नहीं होती हैं; कुछ महत्वपूर्ण अंक वाले मानों के कई संभावित प्रतिनिधित्व हैं: 1×102=0.1×103=0.01×104, आदि। जब महत्व शून्य है, तो घातांक का कोई भी मान हो सकता है।

आईईई 754-2008 दशमलव फ़्लोटिंग-पॉइंट प्रारूप
दशमलव32 दशमलव64 दशमलव128 दशमलव (32k) प्रारूप
1 1 1 1 साइन फ़ील्ड (बिट्स)
5 5 5 5 संयोजन क्षेत्र (बिट्स)
6 8 12 w = 2×k + 4 प्रतिपादक निरंतरता क्षेत्र (बिट्स)
20 50 110 t = 30×k−10 गुणांक निरंतरता क्षेत्र (बिट्स)
32 64 128 32×k कुल आकार (बिट्स)
7 16 34 p = 3×t/10+1 = 9×k−2 गुणांक आकार (दशमलव अंक)
192 768 12288 3×2w = 48×4k घातांक रेंज
96 384 6144 Emax = 3×2w−1 अधिकतम मान 9.99...×10Emax है
−95 −383 −6143 Emin = 1−Emax न्यूनतम सामान्यीकृत मान 1.00...×10Emin है
−101 −398 −6176 Etiny = 2−p−Emax सबसे छोटा शून्येतर मान 1×10Etiny है

प्रतिपादक श्रेणियों को चुना गया ताकि सामान्यीकृत मानों के लिए उपलब्ध सीमा लगभग सममित हो सके। चूंकि यह संभावित घातांक मानों की समान संख्या के साथ नहीं किया जा सकता है, इसलिए Emax को अतिरिक्त मान दिया गया था।

दो अलग-अलग अभ्यावेदन परिभाषित किए गए हैं:

  • एक द्विआधारी पूर्णांक महत्व क्षेत्र के साथ 0 और 10p−1 के बीच बड़े द्विआधारी पूर्णांक के रूप में महत्व को कूटबद्ध करता है। बाइनरी अंकगणितीय तर्क इकाई का उपयोग करके सॉफ्टवेयर कार्यान्वयन के लिए यह अधिक सुविधाजनक होने का भरोसा है।
  • 'सघन रूप से भरे किए गए दशमलव महत्व क्षेत्र' के साथ और दशमलव अंकों को अधिक सीधे कूटबद्ध करता है। यह बाइनरी फ्लोटिंग-पॉइंट फॉर्म से और तेजी से रूपांतरण करता है, किन्तु कुशलता से परिवर्तन करने के लिए विशेष हार्डवेयर की आवश्यकता होती है। हार्डवेयर कार्यान्वयन के लिए यह अधिक सुविधाजनक होने का भरोसा है।

दोनों विकल्प प्रतिनिधित्व योग्य मानों की पूर्णतः समान श्रेणी प्रदान करते हैं।

प्रतिपादक के सबसे महत्वपूर्ण दो बिट 0−2 की सीमा तक सीमित हैं, और महत्व के सबसे महत्वपूर्ण 4 बिट 0−9 की सीमा तक सीमित हैं। अनंत और एनएएन के लिए विशेष रूपों के साथ, 30 संभावित संयोजनों को 5-बिट फ़ील्ड में एन्कोड किया गया है।

यदि महत्व के सबसे महत्वपूर्ण 4 बिट 0 और 7 के बीच हैं, तो एन्कोडेड मान निम्नेन सार प्रारंभ होता है:

s 00mmm xxx   Exponent begins with 00, significand with 0mmm
s 01mmm xxx   Exponent begins with 01, significand with 0mmm
s 10mmm xxx   Exponent begins with 10, significand with 0mmm

यदि महत्व के अग्रणी 4 बिट बाइनरी 1000 या 1001 (दशमलव 8 या 9) हैं, तो संख्या इस प्रकार प्रारंभ होती है:

s 1100m xxx   Exponent begins with 00, significand with 100m
s 1101m xxx   Exponent begins with 01, significand with 100m
s 1110m xxx   Exponent begins with 10, significand with 100m

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

s 11110 x   ±Infinity (see Extended real number line)
s 11111 0   quiet NaN (sign bit ignored)
s 11111 1   signaling NaN (sign bit ignored)

बाद के मामलों में, एन्कोडिंग के अन्य सभी बिट्स को उपेक्षित कर दिया जाता है। इस प्रकार एक बाइट मान के साथ भरकर एक सरणी को NaNs में प्रारंभ करना संभव है।

बाइनरी पूर्णांक महत्व क्षेत्र

यह प्रारूप 0 से 10p−1 तक बाइनरी महत्व का उपयोग करता है. उदाहरण के लिए, दशमलव32 महत्व 107−1 = 9999999 = 98967F16 = 1001100010010110011111112 तक हो सकता है। जबकि एन्कोडिंग बड़े महत्व का प्रतिनिधित्व कर सकता है, वे अवैध हैं और इनपुट पर सामना होने पर मानक को 0 के रूप में व्यवहार करने के लिए कार्यान्वयन की आवश्यकता होती है।

जैसा कि ऊपर बताया गया है, एन्कोडिंग इस बात पर निर्भर करती है कि महत्व के सबसे महत्वपूर्ण 4 बिट्स 0 से 7 (00002 से 01112), या उच्चतर (10002 या 10012) की सीमा में हैं।

यदि साइन बिट के बाद के 2 बिट्स 00, 01, या 10 हैं, तो घातांक फ़ील्ड में साइन बिट के बाद 8 बिट्स होते हैं (2 बिट्स का उल्लेख किया गया है और "घातांक निरंतरता क्षेत्र" के 6 बिट्स), और महत्व शेष 23 है बिट्स हैं, जिसमे अंतर्निहित अग्रणी 0 बिट है, जो यहां कोष्ठकों में दिखाया गया है:

s 00eeeeee   (0)ttt tttttttttt tttttttttt
s 01eeeeee   (0)ttt tttttttttt tttttttttt
s 10eeeeee   (0)ttt tttttttttt tttttttttt

इसमें उपसामान्य संख्याएं सम्मिलित हैं जहां प्रमुख महत्व और अंक 0 है। यदि साइन बिट के बाद 2 बिट्स 11 हैं, तो 8-बिट घातांक फ़ील्ड को 2 बिट्स को दाईं ओर स्थानांतरित कर दिया जाता है (साइन बिट और उसके बाद 11 बिट्स दोनों के बाद), और प्रतिनिधित्व महत्व शेष 21 बिट्स में है। इस स्थितियों में वास्तविक महत्व में 3-बिट अनुक्रम 100 का अंतर्निहित (जो संग्रहीत नहीं है) है:

s 1100eeeeee (100)t tttttttttt tttttttttt
s 1101eeeeee (100)t tttttttttt tttttttttt
s 1110eeeeee (100)t tttttttttt tttttttttt

साइन बिट के बाद 11 2-बिट अनुक्रम इंगित करता है कि महत्व के लिए अंतर्निहित 100 3-बिट उपसर्ग है।

ध्यान दें कि महत्व क्षेत्र के प्रमुख बिट्स सबसे महत्वपूर्ण दशमलव अंक को एनकोड नहीं करते हैं; वे बस बड़ी शुद्ध-द्विआधारी संख्या का हिस्सा हैं। उदाहरण के लिए, 8000000 के महत्व को बाइनरी 011110100001001000000000 के रूप में एन्कोड किया गया है जिसमे अग्रणी 4 बिट्स एन्कोडिंग 7 के साथ हैं; पहला महत्व जिसके लिए 24 बिट की आवश्यकता होती है (और इस प्रकार दूसरा एन्कोडिंग फॉर्म) वह 223 = 8388608 है.

उपरोक्त मामलों में, प्रतिनिधित्व मान है:

(−1)साइन × 10घातांक−101 × महत्व

दशमलव64 और दशमलव128 बड़े एक्सपोनेंट निरंतरता और महत्वपूर्ण क्षेत्रों के साथ समान रूप से संचालित होते हैं। दशमलव128 के लिए, दूसरा एन्कोडिंग फॉर्म वास्तव में कभी 1034−1 = 1ED09BEAD87C0378D8E63FFFFFFFF16 का सबसे बड़ा वैध महत्व113 बिट्स में प्रदर्शित किया जा सकता है।

घनी पैक दशमलव महत्व क्षेत्र

इस संस्करण में, महत्व को दशमलव अंकों की श्रृंखला के रूप में संग्रहीत किया जाता है। अग्रणी अंक 0 और 9 (3 या 4 बाइनरी बिट्स) के बीच है, और शेष महत्व सघन पैक दशमलव (DPD) एन्कोडिंग का उपयोग करता है।

प्रतिपादक के अग्रणी 2 बिट्स और महत्व के अग्रणी अंक (3 या 4 बिट्स) को पांच बिट्स में जोड़ा जाता है जो साइन बिट का पालन करते हैं। इसके बाद फिक्स्ड-ऑफसेट घातांक निरंतर क्षेत्र आता है।

अंत में, महत्व निरंतरता क्षेत्र 2, 5, या 11 10-बिट डिलेट (कंप्यूटिंग) से बना है, प्रत्येक 3 दशमलव अंकों को कूटबद्ध करता है।[7]

   Comb.  Exponent          Significand
 s 00 TTT (00)eeeeee (0TTT)[tttttttttt][tttttttttt]
 s 01 TTT (01)eeeeee (0TTT)[tttttttttt][tttttttttt]
 s 10 TTT (10)eeeeee (0TTT)[tttttttttt][tttttttttt]

यदि साइन बिट के बाद पहले दो बिट 11 हैं, तो दूसरे दो बिट घातांक के अग्रणी बिट हैं, और अंतिम बिट को 100 के साथ अग्रणी दशमलव अंक (8 या 9) बनाने के लिए उपसर्ग किया जाता है:

    Comb.  Exponent          Significand
 s 1100 T (00)eeeeee (100T)[tttttttttt][tttttttttt]
 s 1101 T (01)eeeeee (100T)[tttttttttt][tttttttttt]
 s 1110 T (10)eeeeee (100T)[tttttttttt][tttttttttt]

5-बिट फ़ील्ड के शेष दो संयोजन (11110 और 11111) क्रमशः ± अनंत और एनएएनएस का प्रतिनिधित्व करने के लिए उपयोग किए जाते हैं।

फ़्लोटिंग-पॉइंट अंकगणितीय ऑपरेशन

फ़्लोटिंग-पॉइंट अंकगणित करने का सामान्य नियम यह है कि सटीक गणितीय मान की गणना की जाती है,[8] और फिर परिणाम को निर्दिष्ट सटीकता में निकटतम प्रतिनिधित्व योग्य मान पर गोल किया जाता है। यह वास्तव में सामान्य राउंडिंग व्यवहार के तहत और असाधारण स्थितियों की अनुपस्थिति में आईईईई-अनुपालन कंप्यूटर हार्डवेयर के लिए अनिवार्य व्यवहार है।

प्रस्तुति और समझ में आसानी के लिए, उदाहरणों में 7 अंकों की सटीकता का उपयोग किया जाएगा। मौलिक सिद्धांत किसी भी परिशुद्धता में समान हैं।

जोड़

फ़्लोटिंग-पॉइंट नंबर जोड़ने का सरल तरीका यह है कि पहले उन्हें उसी घातांक के साथ प्रदर्शित किया जाए। नीचे दिए गए उदाहरण में, दूसरी संख्या को 3 अंकों से दाईं ओर स्थानांतरित कर दिया गया है। हम सामान्य जोड़ विधि के साथ आगे बढ़ते हैं:

निम्न उदाहरण दशमलव है, जिसका सीधा अर्थ है कि आधार 10 है।

  123456.7 = 1.234567 × 105
  101.7654 = 1.017654 × 102 = 0.001017654 × 105

इस प्रकार:

  123456.7 + 101.7654 = (1.234567 × 105) + (1.017654 × 102)
                      = (1.234567 × 105) + (0.001017654 × 105)
                      = 105 × (1.234567 + 0.001017654)
                      = 105 × 1.235584654

यह वैज्ञानिक संकेतन में परिवर्तित होने के अलावा और कुछ नहीं है।

विस्तार से:

  e = 5; s = 1.234567 (123456.7)
+ e = 2; s = 1.017654 (101.7654)
  e = 5; s = 1.234567
+ e = 5; s=0.001017654 (after shifting)
--------------------
  e = 5; s=1.235584654 (true sum: 123558.4654)

यह सही परिणाम है जो ऑपरेंड का सटीक योग है। इसे 7 अंकों तक गोल किया जाएगा और यदि आवश्यक हो तो सामान्य किया जाएगा। अंतिम परिणाम है:

  e = 5; s=1.235585 (final sum: 123558.5)

ध्यान दें कि दूसरे ऑपरेंड (654) के निम्न 3 अंक अनिवार्य रूप से लुप्त गए हैं। यह राउंड-ऑफ त्रुटि है। अत्यधिक मामलों में, दो गैर-शून्य संख्याओं का योग उनमें से के बराबर हो सकता है:

  e = 5; s = 1.234567
+ e =-3;s = 9.876543
  e = 5; s = 1.234567
+ e = 5; s=0.00000009876543 (after shifting)
----------------------
  e = 5; s=1.23456709876543 (true sum)
  e = 5; s=1.234567         (after rounding/normalization)

महत्व के नुकसान की और समस्या तब होती है जब दो लगभग समान संख्याओं के सन्निकटन को घटाया जाता है। निम्नलिखित उदाहरण में e = 5; s = 1.234571 और e = 5; s=1.234567 परिमेय 123457.1467 और 123456.659 के अनुमान हैं।

  e = 5; s = 1.234571
- e = 5; s = 1.234567
----------------
  e = 5; s = 0.000004
  e =-1;s=4.000000 (after rounding and normalization)

फ़्लोटिंग-पॉइंट अंतर की गणना बिल्कुल इसलिए की जाती है क्योंकि संख्याएँ करीब होती हैं - डाई बेंज लेम्मा इसकी गारंटी देता है, यहां तक ​​कि अंडरफ़्लो की स्थितियों में भी जब क्रमिक अंडरफ़्लो समर्थित होता है। इसके बावजूद, मूल संख्याओं का अंतर e=−1, s = 4.877000 है; जो अंतर e = −1 से s= 4.000000अनुमानों के 20% से अधिक भिन्न है। चरम मामलों में, सटीकता के सभी महत्वपूर्ण अंक लुप्त हो सकते हैं।[9][10] यह निरस्तीकरण यह मानने के खतरे को दर्शाता है कि गणना किए गए परिणाम के सभी अंक अर्थपूर्ण हैं। इन त्रुटियों के परिणामों से निपटना संख्यात्मक विश्लेषण का विषय है; सटीकता की समस्याएं भी देखें।

गुणा

गुणा करने के लिए, महत्व को गुणा किया जाता है, जबकि घातांक जोड़े जाते हैं, और परिणाम को गोल और सामान्यीकृत किया जाता है।

  e = 3; s = 4.734612
× e = 5; s = 5.417242
--------------------------------------
  e = 8; s=25.648538980104  (true product)
  e = 8; s=25.64854         (after rounding)
  e = 9; s = 2.564854       (after normalization)

विभाजन इसी प्रकार किया जाता है, किन्तु वह अधिक जटिल है।

गुणन या विभाजन के साथ निरस्त्रीकरण या अवशोषण की कोई समस्या नहीं है, चूंकि छोटी त्रुटियां जमा हो सकती हैं क्योंकि संचालन बार-बार किया जाता है। व्यवहार में, जिस प्रकार से डिजिटल लॉजिक में ये ऑपरेशन किए जाते हैं वह काफी जटिल हो सकता है।

यह भी देखें

संदर्भ

  1. Beebe, Nelson H. F. (2017-08-22). "Chapter H. Historical floating-point architectures". The Mathematical-Function Computation Handbook - Programming Using the MathCW Portable Software Library (1 ed.). Salt Lake City, UT, USA: Springer International Publishing AG. p. 948. doi:10.1007/978-3-319-64110-2. ISBN 978-3-319-64109-6. LCCN 2017947446.
  2. 2.0 2.1 2.2 Savard, John J. G. (2018) [2007]. "The Decimal Floating-Point Standard". quadibloc. Archived from the original on 2018-07-03. Retrieved 2018-07-16.
  3. "IBM z9 EC and z9 BC — Delivering greater value for everyone" (PDF). 306.ibm.com. Retrieved 7 July 2018.
  4. "Arithmetic IPs for Financial Applications - SilMinds". Silminds.com.
  5. "Chapter 4. Data Formats". Sparc64 X/X+ Specification. Nakahara-ku, Kawasaki, Japan. January 2015. p. 13.{{cite book}}: CS1 maint: location missing publisher (link)
  6. "Decimal floating point in .NET". Yoda.arachsys.com.
  7. Muller, Jean-Michel; Brisebarre, Nicolas; de Dinechin, Florent; Jeannerod, Claude-Pierre; Lefèvre, Vincent; Melquiond, Guillaume; Revol, Nathalie; Stehlé, Damien; Torres, Serge (2010). फ़्लोटिंग-प्वाइंट अंकगणित की पुस्तिका (1 ed.). Birkhäuser. doi:10.1007/978-0-8176-4705-6. ISBN 978-0-8176-4704-9. LCCN 2009939668.</रेफरी> यदि साइन बिट के बाद के पहले दो बिट 00 , 01 , या 10 हैं, तो वे एक्सपोनेंट के अग्रणी बिट हैं, और उसके बाद के तीन बिट्स को अग्रणी दशमलव अंक (0 से 7) के रूप में समझा जाता है: रेफरी>दशमलव एन्कोडिंग विशिष्टता, संस्करण 1.00, आईबीएम से
  8. Computer hardware doesn't necessarily compute the exact value; it simply has to produce the equivalent rounded result as though it had computed the infinitely precise result.
  9. Goldberg, David (March 1991). "What Every Computer Scientist Should Know About Floating-Point Arithmetic" (PDF). ACM Computing Surveys. 23 (1): 5–48. doi:10.1145/103162.103163. S2CID 222008826. Retrieved 2016-01-20. ([1], [2], [3])
  10. US patent 3037701A, Huberto M Sierra, "Floating decimal point arithmetic control means for calculator", issued 1962-06-05 

आगे की पढाई