आईईईई 754-1985: Difference between revisions
No edit summary |
No edit summary |
||
| Line 79: | Line 79: | ||
== सीमा और परिशुद्धता == | == सीमा और परिशुद्धता == | ||
[[File:IEEE 754 relative precision.svg|thumb|महत्वपूर्ण अंकों की निश्चित संख्या का उपयोग करके दशमलव प्रतिनिधित्व की तुलना में ल (बाइनरी 32) और डबल त्रुटिहीन (बाइनरी 64) संख्याओं की सापेक्ष त्रुटिहीनता। सापेक्ष परिशुद्धता को यहां ulp(x)/x के रूप में परिभाषित किया गया है, जहां ulp(x) x के प्रतिनिधित्व में [[अंतिम स्थान पर इकाई]] है, अर्थात x और अगले प्रतिनिधित्व योग्य संख्या के | [[File:IEEE 754 relative precision.svg|thumb|महत्वपूर्ण अंकों की निश्चित संख्या का उपयोग करके दशमलव प्रतिनिधित्व की तुलना में ल (बाइनरी 32) और डबल त्रुटिहीन (बाइनरी 64) संख्याओं की सापेक्ष त्रुटिहीनता। सापेक्ष परिशुद्धता को यहां ulp(x)/x के रूप में परिभाषित किया गया है, जहां ulp(x) x के प्रतिनिधित्व में [[अंतिम स्थान पर इकाई]] है, अर्थात x और अगले प्रतिनिधित्व योग्य संख्या के मध्यका अंतर।]]परिशुद्धता को दो क्रमिक मंटिसा अभ्यावेदन के मध्यन्यूनतम अंतर के रूप में परिभाषित किया गया है; इस प्रकार यह केवल मंटिसा में कार्य है; जबकि अंतर को दो क्रमिक संख्याओं के मध्यके अंतर के रूप में परिभाषित किया गया है।<ref>{{citation |title=Computer Arithmetic |author1=Hossam A. H. Fahmy |author2=Shlomo Waser |author3=Michael J. Flynn |url=http://arith.stanford.edu/~hfahmy/webpages/arith_class/arith.pdf |access-date=2011-01-02 |url-status=dead |archive-url=https://web.archive.org/web/20101008203307/http://arith.stanford.edu/~hfahmy/webpages/arith_class/arith.pdf |archive-date=2010-10-08}}</ref> | ||
[[एकल परिशुद्धता|'''ल परिशुद्धता''']] | [[एकल परिशुद्धता|'''ल परिशुद्धता''']] | ||
| Line 362: | Line 362: | ||
==फ़्लोटिंग-पॉइंट संख्याओं को पूर्णांकित करना== | ==फ़्लोटिंग-पॉइंट संख्याओं को पूर्णांकित करना== | ||
आईईईई मानक में चार | आईईईई मानक में चार भिन्न-भिन्न राउंडिंग मोड हैं; पहला डिफ़ॉल्ट है; अन्य को [[निर्देशित गोलाई]] कहा जाता है। | ||
* 'राउंड टू नियरेस्ट' - निकटतम मान तक राउंड; यदि संख्या | * 'राउंड टू नियरेस्ट' - निकटतम मान तक राउंड; यदि संख्या मध्यमें गिरती है तो इसे सम (शून्य) कम से कम महत्वपूर्ण बिट के साथ निकटतम मान तक पूर्णांकित किया जाता है, जिसका अर्थ है कि इसे 50% समय तक पूर्णांकित किया जाता है (आईईईई 754-2008 में इस मोड को दूसरे दौर से अलग करने के लिए राउंडटीज़टूईवन कहा जाता है) -से-निकटतम मोड) | ||
* '0 की ओर गोल' - शून्य की ओर निर्देशित गोलाई | * '0 की ओर गोल' - शून्य की ओर निर्देशित गोलाई | ||
* '+∞ की ओर गोल' - सकारात्मक अनंत की ओर निर्देशित गोलाई | * '+∞ की ओर गोल' - सकारात्मक अनंत की ओर निर्देशित गोलाई | ||
| Line 370: | Line 370: | ||
==वास्तविक संख्याओं का विस्तार== | ==वास्तविक संख्याओं का विस्तार== | ||
आईईईई मानक | आईईईई मानक भिन्न-भिन्न सकारात्मक और नकारात्मक अनन्तताओं के साथ, पूर्ण रूप से विस्तारित वास्तविक संख्या प्रणाली को नियोजित (और विस्तारित) करता है। प्रारूपण के समय, प्रोग्रामर को मोड चयन विकल्प प्रदान करके, एकल अहस्ताक्षरित अनंत के साथ प्रोजेक्टिवली विस्तारित वास्तविक संख्या प्रणाली को सम्मिलित करने के लिए मानक का प्रस्ताव था। चूँकि, अंतिम मानक की समष्टिता को कम करने के हित में, प्रोजेक्टिव मोड को विस्थापित कर दिया गया था। इंटेल 8087 और [[Intel 80287|इंटेल 80287]] फ़्लोटिंग पॉइंट सह-प्रोसेसर दोनों इस प्रोजेक्टिव मोड का समर्थन करते हैं।<ref>{{cite journal|journal=ACM Transactions on Programming Languages and Systems|volume=18|issue=2|date=March 1996|format=PDF|url=http://www.jhauser.us/publications/1996_Hauser_FloatingPointExceptions.html|author=John R. Hauser|title=संख्यात्मक कार्यक्रमों में फ़्लोटिंग-पॉइंट अपवादों को संभालना|doi=10.1145/227699.227701|pages=139–174|s2cid=9820157}}</ref><ref>{{cite journal|title=IEEE Task P754: A proposed standard for binary floating-point arithmetic|date=March 1981|journal=IEEE Computer|volume=14|issue=3|pages=51–62|author=David Stevenson|doi=10.1109/C-M.1981.220377|s2cid=15523399 }}</ref><ref>{{cite journal|author= William Kahan and John Palmer|year=1979|title=प्रस्तावित फ़्लोटिंग-पॉइंट मानक पर|journal=SIGNUM Newsletter|volume=14|issue=Special|pages=13–21|doi= 10.1145/1057520.1057522|s2cid=16981715}}</ref> | ||
== | == फंक्शन्स और प्रेडिकेट्स == | ||
===मानक संचालन=== | ===मानक संचालन=== | ||
निम्नलिखित कार्य प्रदान किए जाने चाहिए: | निम्नलिखित कार्य प्रदान किए जाने चाहिए: | ||
* | *जोड़ें, घटाएं, गुणा करें, भाग करें। | ||
*[[वर्गमूल]] | *[[वर्गमूल]] | ||
*फ़्लोटिंग पॉइंट शेष | *फ़्लोटिंग पॉइंट शेष यह सामान्य [[मॉड्यूलो ऑपरेशन]] के जैसे नहीं है, यह दो सकारात्मक संख्याओं के लिए नकारात्मक हो सकता है। यह {{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>) होता है। | ||
===अनुशंसित | ===अनुशंसित फंक्शन्स और प्रेडिकेट्स === | ||
* <code>copysign(x,y)</code> y के चिह्न के साथ x लौटाता है, इसलिए <code>abs(x)</code> | * <code>copysign(x,y)</code> y के चिह्न के साथ x लौटाता है, इसलिए <code>abs(x)</code> <code>copysign(x,1.0)</code> के समान होती है। यह उन कुछ ऑपरेशनों में से है जो अंकगणित के समान NaN पर संचालित होता है। फ़ंक्शन <code>copysign</code> C99 मानक में नया है। | ||
* −x, | * −x, विपरीत चिह्न के साथ x लौटाता है। यह कुछ स्थितियों में 0−x से भिन्न है, विशेष रूप से जब x 0 है। तो −(0) −0 है, किन्तु 0−0 का चिह्न पूर्णांकन मोड पर निर्भर करता है। | ||
* <code>scalb(y, N)</code> | * <code>scalb(y, N)</code> | ||
* <code>logb(x)</code> | * <code>logb(x)</code> | ||
* <code>finite(x)</code> x के लिए | * <code>finite(x)</code> x के लिए [[विधेय (गणित)|प्रेडीकेट]] परिमित मान है, जो −Inf < x < Inf के समान है। | ||
* <code>isnan(x)</code> x के लिए | * <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 की दिशा में अगला प्रतिनिधित्व योग्य मान लौटाता है। | ||
==इतिहास== | ==इतिहास== | ||
| Line 407: | Line 407: | ||
[[File:Intel C8087.jpg|thumb|left|इंटेल 8087 फ्लोटिंग-पॉइंट कोप्रोसेसर]]1980 में, Intel 8087 चिप पहले ही रिलीज़ हो चुकी थी,<ref name="Olympus_MIC-D"/>किन्तु प्रदर्शन संबंधी चिंताओं के कारण डीईसी विशेष रूप से असामान्य संख्याओं का विरोध करता रहा और चूंकि इससे डीईसी को डीईसी के प्रारूप पर मानकीकरण करने के लिए प्रतिस्पर्धात्मक लाभ मिलेगा। | [[File:Intel C8087.jpg|thumb|left|इंटेल 8087 फ्लोटिंग-पॉइंट कोप्रोसेसर]]1980 में, Intel 8087 चिप पहले ही रिलीज़ हो चुकी थी,<ref name="Olympus_MIC-D"/>किन्तु प्रदर्शन संबंधी चिंताओं के कारण डीईसी विशेष रूप से असामान्य संख्याओं का विरोध करता रहा और चूंकि इससे डीईसी को डीईसी के प्रारूप पर मानकीकरण करने के लिए प्रतिस्पर्धात्मक लाभ मिलेगा। | ||
धीरे-धीरे | धीरे-धीरे क्रमिक अंडरफ़्लो पर बहस 1981 तक चली जब डिजिटल उपकरण निगम द्वारा इसका आकलन करने के लिए नियुक्त विशेषज्ञ ने असंतुष्टों का पक्ष लिया। डीईसी ने यह प्रदर्शित करने के लिए अध्ययन करवाया था कि क्रमिक अंडरफ़्लो बुरा विचार था, किन्तु अध्ययन का निष्कर्ष विपरीत था, और डीईसी ने हार मान ली। 1985 में, मानक की पुष्टि की गई थी, किन्तु यह साल पहले ही वास्तविक मानक बन गया था, कई निर्माताओं द्वारा कार्यान्वित किया गया।<ref name="Kahan_1998_Story"/><ref name="Chuck_Kahan_Interview"/><ref name="Kahan"/> | ||
==यह भी देखें== | ==यह भी देखें== | ||
*[[आईईईई 754]] | *[[आईईईई 754]] | ||
Revision as of 16:48, 12 August 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.00101 है2 (अर्थात् 1/8 + 1/32)। (अंकाक्षर संख्या मूलांक दर्शाते हैं।) वैज्ञानिक संकेतन के अनुरूप, जहां संख्याओं को दशमलव बिंदु के बाईं ओर गैर-शून्य अंक के रूप में लिखा जाता है, हम इस संख्या को फिर से लिखते हैं ताकि इसमें बाइनरी के बाईं ओर ल 1 बिट हो बिंदु । हम तीन स्थितियों द्वारा छोड़े गए बिट्स के स्थानांतरण की भरपाई के लिए बस 2 की उचित शक्ति से गुणा करते हैं:
अब हम भिन्न और घातांक को पढ़ सकते हैं: भिन्न .01 है2 और घातांक −3 है।
जैसा कि चित्रों में दिखाया गया है, आईईईई 754 में इस संख्या का प्रतिनिधित्व करने वाले तीन फ़ील्ड हैं:
- चिन्ह = 0, क्योंकि संख्या धनात्मक है। (1 नकारात्मक दर्शाता है।)
- पक्षपाती घातांक = −3 + पूर्वाग्रह। 'ल परिशुद्धता' में, पूर्वाग्रह '127' है, इसलिए इस उदाहरण में पक्षपाती घातांक 124 है; 'डबल प्रिसिजन' में, पूर्वाग्रह '1023' है, इसलिए इस उदाहरण में पक्षपाती घातांक 1020 है।
- भिन्न = .01000…2.
आईईईई 754 घातांक में ऑफसेट बाइनरी जोड़ता है ताकि कई मामलों में संख्याओं की तुलना उसी हार्डवेयर द्वारा आसानी से की जा सके जो हस्ताक्षरित 2-पूरक पूर्णांकों की तुलना करता है। पक्षपाती घातांक का उपयोग करते हुए, दो सकारात्मक फ़्लोटिंग-पॉइंट संख्याओं में से छोटी संख्या चिह्न और परिमाण पूर्णांक के समान क्रम के बाद बड़ी संख्या से कम निकलेगी। यदि दो फ़्लोटिंग-पॉइंट संख्याओं के अलग-अलग चिह्न हैं, तो चिह्न-और-परिमाण तुलना पक्षपातपूर्ण घातांक के साथ भी काम करती है। चूँकि, यदि दोनों पक्षपाती-प्रतिपादक फ़्लोटिंग-पॉइंट संख्याएँ नकारात्मक हैं, तो क्रम को उलट दिया जाना चाहिए। यदि घातांक को, मान लीजिए, 2-पूरक संख्या के रूप में दर्शाया जाता है, तो यह देखने के लिए तुलना करना कि दो संख्याओं में से कौन सी बड़ी है, उतना सुविधाजनक नहीं होगा।
अग्रणी 1 बिट को हटा दिया गया है क्योंकि शून्य को छोड़कर सभी संख्याएँ अग्रणी 1 से शुरू होती हैं; अग्रणी 1 अंतर्निहित है और वास्तव में इसे संग्रहीत करने की आवश्यकता नहीं है जो मुफ़्त में अतिरिक्त परिशुद्धता देता है।
शून्य
शून्य संख्या को विशेष रूप से दर्शाया गया है:
- हस्ताक्षरित शून्य के लिए चिह्न = 0, हस्ताक्षरित शून्य के लिए 1।
- पक्षपाती घातांक = 0.
- भिन्न = 0.
असामान्यीकृत संख्याएँ
ऊपर वर्णित संख्या निरूपण को सामान्यीकृत कहा जाता है, जिसका अर्थ है कि अंतर्निहित अग्रणी बाइनरी अंक 1 है। अंकगणितीय अंडरफ्लो होने पर परिशुद्धता के नुकसान को कम करने के लिए, आईईईई 754 में सामान्यीकृत प्रतिनिधित्व में संभव से छोटे अंशों का प्रतिनिधित्व करने की क्षमता सम्मिलित है। अंतर्निहित अग्रणी अंक को 0 बनाना। ऐसी संख्याओं को असामान्य संख्याएँ कहा जाता है। उनमें सामान्यीकृत संख्या जितने महत्वपूर्ण अंक सम्मिलित नहीं होते हैं, किन्तु जब फ़्लोटिंग-पॉइंट अंकगणित # फ़्लोटिंग-पॉइंट ऑपरेशंस का परिणाम बिल्कुल शून्य नहीं होता है, किन्तु शून्य के बहुत करीब होता है, तो वे परिशुद्धता के क्रमिक नुकसान को सक्षम करते हैं। सामान्यीकृत संख्या.
असामान्य संख्या को सभी 0 बिट्स के पक्षपाती घातांक के साथ दर्शाया जाता है, जो ल परिशुद्धता में −126 के घातांक का प्रतिनिधित्व करता है (−127 नहीं), या दोहरी परिशुद्धता में −1022 (−1023 नहीं) का प्रतिनिधित्व करता है।[3] इसके विपरीत, सामान्य संख्या का प्रतिनिधित्व करने वाला सबसे छोटा पक्षपाती घातांक 1 है (नीचे #उदाहरण देखें)।
गैर-संख्याओं का प्रतिनिधित्व
किसी गणना की अनंतता या अमान्य परिणाम को इंगित करने के लिए पक्षपाती-प्रतिपादक फ़ील्ड सभी 1 बिट्स से भरा हुआ है।
सकारात्मक और नकारात्मक अनंत
विस्तारित वास्तविक रेखा को इस प्रकार दर्शाया गया है:
- सकारात्मक अनंत के लिए चिह्न = 0, नकारात्मक अनंत के लिए 1।
- पक्षपाती प्रतिपादक = सभी 1 बिट्स।
- अंश = सभी 0 बिट्स।
NaN
फ़्लोटिंग-पॉइंट अंकगणित#फ़्लोटिंग-पॉइंट ऑपरेशंस|फ़्लोटिंग-पॉइंट अंकगणित के कुछ ऑपरेशन अमान्य हैं, जैसे ऋणात्मक संख्या का वर्गमूल लेना। किसी अमान्य परिणाम तक पहुंचने की क्रिया को फ़्लोटिंग-पॉइंट अपवाद कहा जाता है। असाधारण परिणाम को विशेष कोड द्वारा दर्शाया जाता है जिसे NaN कहा जाता है, संख्या नहीं के लिए। आईईईई 754-1985 में सभी NaN का प्रारूप यह है:
- चिह्न = या तो 0 या 1.
- पक्षपाती प्रतिपादक = सभी 1 बिट्स।
- अंश = सभी 0 बिट्स को छोड़कर कुछ भी (क्योंकि सभी 0 बिट्स अनंत का प्रतिनिधित्व करते हैं)।
सीमा और परिशुद्धता
परिशुद्धता को दो क्रमिक मंटिसा अभ्यावेदन के मध्यन्यूनतम अंतर के रूप में परिभाषित किया गया है; इस प्रकार यह केवल मंटिसा में कार्य है; जबकि अंतर को दो क्रमिक संख्याओं के मध्यके अंतर के रूप में परिभाषित किया गया है।[4]
ल-त्रुटिहीन संख्याएँ 32 बिट्स पर कब्जा करती हैं। ल परिशुद्धता में:
- शून्य के निकटतम सकारात्मक और नकारात्मक संख्याएं (घातक क्षेत्र में सभी 0 के साथ असामान्य मान और अंश क्षेत्र में बाइनरी मान 1 द्वारा दर्शायी जाती हैं) हैं
- ±2−23×2−126 ≈ ±1.40130×10−45
- शून्य के निकटतम सकारात्मक और नकारात्मक सामान्यीकृत संख्याएं (घातक क्षेत्र में बाइनरी मान 1 और अंश क्षेत्र में 0 के साथ दर्शायी जाती हैं) हैं
- ±1 × 2−126 ≈ ±1.17549×10−38
- शून्य से सबसे दूर की परिमित धनात्मक और परिमित ऋणात्मक संख्याएँ (घातक क्षेत्र में 254 और भिन्न क्षेत्र में सभी 1 के साथ मान द्वारा दर्शाई गई) हैं
- ±(2−2−23) × 2127[5] ≈ ±3.40282×1038
ल परिशुद्धता में दिए गए घातांक के लिए कुछ उदाहरण सीमा और अंतराल मान:
| वास्तविक प्रतिपादक (अनबायस्ड) | प्रतिपादक (बायस्ड) | न्यूनतम | अधिकतम | गैप |
|---|---|---|---|---|
| −1 | 126 | 0.5 | ≈ 0.999999940395 | ≈ 5.96046e-8 |
| 0 | 127 | 1 | ≈ 1.999999880791 | ≈ 1.19209e-7 |
| 1 | 128 | 2 | ≈ 3.999999761581 | ≈ 2.38419e-7 |
| 2 | 129 | 4 | ≈ 7.999999523163 | ≈ 4.76837e-7 |
| 10 | 137 | 1024 | ≈ 2047.999877930 | ≈ 1.22070e-4 |
| 11 | 138 | 2048 | ≈ 4095.999755859 | ≈ 2.44141e-4 |
| 23 | 150 | 8388608 | 16777215 | 1 |
| 24 | 151 | 16777216 | 33554430 | 2 |
| 127 | 254 | ≈ 1.70141e38 | ≈ 3.40282e38 | ≈ 2.02824e31 |
उदाहरण के तौर पर, 16,777,217 को 32-बिट फ़्लोट के रूप में एन्कोड नहीं किया जा सकता क्योंकि इसे 16,777,216 पर पूर्णांकित किया जाएगा। इससे पता चलता है कि फ़्लोटिंग पॉइंट अंकगणित लेखांकन सॉफ़्टवेयर के लिए अनुपयुक्त क्यों है। चूँकि, प्रतिनिधित्व योग्य सीमा के भीतर सभी पूर्णांक जो 2 की शक्ति हैं, उन्हें बिना गोलाई के 32-बिट फ़्लोट में संग्रहीत किया जा सकता है।
दोहरी परिशुद्धता
डबल-त्रुटिहीन संख्याएँ 64 बिट्स पर कब्जा करती हैं। दोहरी परिशुद्धता में:
- शून्य के निकटतम सकारात्मक और नकारात्मक संख्याएं (्सप फ़ील्ड में सभी 0 के साथ असामान्य मान और फ्रैक्शन फ़ील्ड में बाइनरी मान 1 द्वारा दर्शायी जाती हैं) हैं
- ±2−52×2−1022 ≈ ±4.94066×10−324
- शून्य के निकटतम सकारात्मक और नकारात्मक सामान्यीकृत संख्याएं (्सप फ़ील्ड में बाइनरी मान 1 और अंश फ़ील्ड में 0 के साथ दर्शायी जाती हैं) हैं
- ±1 × 2−1022 ≈ ±2.22507×10−308
- शून्य से सबसे दूर की परिमित धनात्मक और परिमित ऋणात्मक संख्याएँ (्सप फ़ील्ड में 2046 और भिन्न फ़ील्ड में सभी 1 के साथ मान द्वारा दर्शाई गई) हैं
- ±(2−2−52)×21023[5]≈ ±1.79769×10308
दोहरी परिशुद्धता में दिए गए घातांक के लिए कुछ उदाहरण सीमा और अंतराल मान:
| वास्तविक प्रतिपादक (अनबायस्ड) | प्रतिपादक (बायस्ड) | न्यूनतम | अधिकतम | गैप |
|---|---|---|---|---|
| −1 | 1022 | 0.5 | ≈ 0.999999999999999888978 | ≈ 1.11022e-16 |
| 0 | 1023 | 1 | ≈ 1.999999999999999777955 | ≈ 2.22045e-16 |
| 1 | 1024 | 2 | ≈ 3.999999999999999555911 | ≈ 4.44089e-16 |
| 2 | 1025 | 4 | ≈ 7.999999999999999111822 | ≈ 8.88178e-16 |
| 10 | 1033 | 1024 | ≈ 2047.999999999999772626 | ≈ 2.27374e-13 |
| 11 | 1034 | 2048 | ≈ 4095.999999999999545253 | ≈ 4.54747e-13 |
| 52 | 1075 | 4503599627370496 | 9007199254740991 | 1 |
| 53 | 1076 | 9007199254740992 | 18014398509481982 | 2 |
| 1023 | 2046 | ≈ 8.98847e307 | ≈ 1.79769e308 | ≈ 1.99584e292 |
विस्तारित प्रारूप
मानक राउंड-ऑफ त्रुटियों को कम करने के लिए, अंतिम परिणाम के लिए आवश्यक उच्च परिशुद्धता पर आंतरिक गणना करने के लिए विस्तारित प्रारूप (ओं) का उपयोग करने की भी सिफारिश करता है: मानक केवल ऐसे प्रारूपों के लिए न्यूनतम परिशुद्धता और घातांक आवश्यकताओं को निर्दिष्ट करता है। x87 विस्तारित परिशुद्धता | 80-बिट विस्तारित प्रारूप सबसे सामान्यतः लागू किया जाने वाला विस्तारित प्रारूप है जो इन आवश्यकताओं को पूरा करता है।
उदाहरण
यहां ल-त्रुटिहीन आईईईई 754 अभ्यावेदन के कुछ उदाहरण दिए गए हैं:
| Type | Sign | Actual Exponent | Exp (biased) | Exponent field | Fraction field | Value |
|---|---|---|---|---|---|---|
| Zero | 0 | −126 | 0 | 0000 0000 | 000 0000 0000 0000 0000 0000 | 0.0 |
| Negative zero | 1 | −126 | 0 | 0000 0000 | 000 0000 0000 0000 0000 0000 | −0.0 |
| One | 0 | 0 | 127 | 0111 1111 | 000 0000 0000 0000 0000 0000 | 1.0 |
| Minus One | 1 | 0 | 127 | 0111 1111 | 000 0000 0000 0000 0000 0000 | −1.0 |
| Smallest denormalized number | * | −126 | 0 | 0000 0000 | 000 0000 0000 0000 0000 0001 | ±2−23 × 2−126 = ±2−149 ≈ ±1.4×10−45 |
| "Middle" denormalized number | * | −126 | 0 | 0000 0000 | 100 0000 0000 0000 0000 0000 | ±2−1 × 2−126 = ±2−127 ≈ ±5.88×10−39 |
| Largest denormalized number | * | −126 | 0 | 0000 0000 | 111 1111 1111 1111 1111 1111 | ±(1−2−23) × 2−126 ≈ ±1.18×10−38 |
| Smallest normalized number | * | −126 | 1 | 0000 0001 | 000 0000 0000 0000 0000 0000 | ±2−126 ≈ ±1.18×10−38 |
| Largest normalized number | * | 127 | 254 | 1111 1110 | 111 1111 1111 1111 1111 1111 | ±(2−2−23) × 2127 ≈ ±3.4×1038 |
| Positive infinity | 0 | 128 | 255 | 1111 1111 | 000 0000 0000 0000 0000 0000 | +∞ |
| Negative infinity | 1 | 128 | 255 | 1111 1111 | 000 0000 0000 0000 0000 0000 | −∞ |
| Not a number | * | 128 | 255 | 1111 1111 | non zero | NaN |
| * Sign bit can be either 0 or 1 . | ||||||
फ़्लोटिंग-पॉइंट संख्याओं की तुलना करना
ऋणात्मक शून्य और धनात्मक शून्य के लिए बिट्स के दो संयोजनों को छोड़कर, प्रत्येक संभावित बिट संयोजन या तो NaN है या संबद्ध क्रम के साथ एफ़िनली विस्तारित वास्तविक संख्या प्रणाली में अद्वितीय मान वाला नंबर है, जिस पर कभी-कभी विशेष ध्यान देने की आवश्यकता होती है (नीचे देखें) . #Repretation_of_numbers में विशेष गुण है कि, NaN को छोड़कर, किसी भी दो संख्याओं की तुलना चिह्न और परिमाण पूर्णांक के रूप में की जा सकती है (endianness मुद्दे लागू होते हैं)। 2 के पूरक पूर्णांकों के रूप में तुलना करते समय: यदि साइन बिट भिन्न होते हैं, तो नकारात्मक संख्या सकारात्मक संख्या से पहले होती है, इसलिए 2 का पूरक सही परिणाम देता है (सिवाय इसके कि नकारात्मक शून्य और सकारात्मक शून्य को समान माना जाना चाहिए)। यदि दोनों मान सकारात्मक हैं, तो 2 की पूरक तुलना फिर से सही परिणाम देती है। अन्यथा (दो नकारात्मक संख्याएं), सही एफपी क्रम 2 के पूरक क्रम के विपरीत है।
फ़्लोटिंग पॉइंट गणनाओं में निहित राउंडिंग त्रुटियाँ परिणामों की त्रुटिहीन समानता की जाँच के लिए तुलनाओं के उपयोग को सीमित कर सकती हैं। स्वीकार्य सीमा चुनना जटिल विषय है। अनुमानित तुलना करने के लिए तुलनात्मक ईपीएसलॉन मान का उपयोग करना सामान्य तकनीक है।[6] तुलनाएँ कितनी उदार हैं, इसके आधार पर सामान्य मूल्यों में सम्मिलित हैं 1e-6 या 1e-5 ल परिशुद्धता के लिए, और 1e-14 दोहरी परिशुद्धता के लिए.[7][8] अन्य सामान्य तकनीक यूएलपी है, जो जांच करती है कि अंतिम स्थान के अंकों में क्या अंतर है, प्रभावी ढंग से जांचती है कि दोनों मान कितने कदम दूर हैं।[9]
चूँकि तुलनात्मक उद्देश्यों के लिए नकारात्मक शून्य और सकारात्मक शून्य को सामान्यतः समान माना जाता है, कुछ प्रोग्रामिंग भाषा रिलेशनल ऑपरेटर और समान निर्माण उन्हें अलग मानते हैं। जावा (प्रोग्रामिंग भाषा) भाषा विशिष्टता के अनुसार,[10] तुलना और समानता संचालक उन्हें समान मानते हैं, किन्तु Math.min() और Math.max() उन्हें अलग करें (आधिकारिक तौर पर जावा संस्करण 1.1 से शुरू करें किन्तु वास्तव में 1.1.1 से), जैसा कि तुलना विधियां करती हैं equals(), compareTo() और भी compare() कक्षाओं का Float और Double.
फ़्लोटिंग-पॉइंट संख्याओं को पूर्णांकित करना
आईईईई मानक में चार भिन्न-भिन्न राउंडिंग मोड हैं; पहला डिफ़ॉल्ट है; अन्य को निर्देशित गोलाई कहा जाता है।
- 'राउंड टू नियरेस्ट' - निकटतम मान तक राउंड; यदि संख्या मध्यमें गिरती है तो इसे सम (शून्य) कम से कम महत्वपूर्ण बिट के साथ निकटतम मान तक पूर्णांकित किया जाता है, जिसका अर्थ है कि इसे 50% समय तक पूर्णांकित किया जाता है (आईईईई 754-2008 में इस मोड को दूसरे दौर से अलग करने के लिए राउंडटीज़टूईवन कहा जाता है) -से-निकटतम मोड)
- '0 की ओर गोल' - शून्य की ओर निर्देशित गोलाई
- '+∞ की ओर गोल' - सकारात्मक अनंत की ओर निर्देशित गोलाई
- '-∞ की ओर गोल' - नकारात्मक अनंत की ओर निर्देशित गोलाई।
वास्तविक संख्याओं का विस्तार
आईईईई मानक भिन्न-भिन्न सकारात्मक और नकारात्मक अनन्तताओं के साथ, पूर्ण रूप से विस्तारित वास्तविक संख्या प्रणाली को नियोजित (और विस्तारित) करता है। प्रारूपण के समय, प्रोग्रामर को मोड चयन विकल्प प्रदान करके, एकल अहस्ताक्षरित अनंत के साथ प्रोजेक्टिवली विस्तारित वास्तविक संख्या प्रणाली को सम्मिलित करने के लिए मानक का प्रस्ताव था। चूँकि, अंतिम मानक की समष्टिता को कम करने के हित में, प्रोजेक्टिव मोड को विस्थापित कर दिया गया था। इंटेल 8087 और इंटेल 80287 फ़्लोटिंग पॉइंट सह-प्रोसेसर दोनों इस प्रोजेक्टिव मोड का समर्थन करते हैं।[11][12][13]
फंक्शन्स और प्रेडिकेट्स
मानक संचालन
निम्नलिखित कार्य प्रदान किए जाने चाहिए:
- जोड़ें, घटाएं, गुणा करें, भाग करें।
- वर्गमूल
- फ़्लोटिंग पॉइंट शेष यह सामान्य