लॉन्ग डबल: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Floating-point data type in C family languages}} {{lowercase title}} {{floating-point}} सी (प्रोग्रामिंग भाषा) औ...")
 
No edit summary
Line 3: Line 3:
{{floating-point}}
{{floating-point}}


सी ([[प्रोग्रामिंग भाषा]]) और संबंधित प्रोग्रामिंग भाषाओं में, <code>'''long double'''</code> [[फ़्लोटिंग-पॉइंट अंकगणित]]ीय | फ़्लोटिंग-पॉइंट [[डेटा प्रकार]] को संदर्भित करता है जो अक्सर डबल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप से अधिक सटीक होता है, हालांकि भाषा मानक के लिए केवल उतना ही सटीक होना आवश्यक है जितना कि <code>double</code>. सी के अन्य फ़्लोटिंग-पॉइंट प्रकारों के साथ, यह आवश्यक रूप से [[IEEE 754]] के लिए मैप नहीं हो सकता है।
C ([[प्रोग्रामिंग भाषा]]) और संबंधित प्रोग्रामिंग भाषाओं में, <code>'''लॉन्ग डबल'''</code> फ़्लोटिंग-पॉइंट [[डेटा प्रकार]] को संदर्भित करता है जो प्रायः डबल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप से अधिक सटीक होता है, हालांकि भाषा मानक के लिए केवल उतना ही सटीक होना आवश्यक है जितना कि <code>डबल</code>. C के अन्य फ़्लोटिंग-पॉइंट प्रकारों के साथ, यह आवश्यक रूप से [[IEEE 754]] के लिए मानचित्र नहीं हो सकता है।


==<code>long double</code> सी == में
== C में<code>लॉन्ग डबल</code> ==


=== इतिहास === <code>long double</code> ई> प्रकार मूल 1989 सी मानक में मौजूद था,<ref>ANSI/ISO 9899-1990 American National Standard for Programming Languages - C, section 6.1.2.5.</ref> लेकिन C मानक, या [[C99]] के 1999 के संशोधन द्वारा समर्थन में सुधार किया गया, जिसने मानक [[पुस्तकालय (कंप्यूटर विज्ञान)]] को विस्तारित करने के लिए कार्यों को शामिल करने के लिए विस्तारित किया। <code>long double</code> जैसे कि <code>sinl()</code> और <code>strtold()</code>.
=== इतिहास ===
<code>लॉन्ग डबल</code> प्रकार मूल 1989 C मानक में उपस्थित था,<ref>ANSI/ISO 9899-1990 American National Standard for Programming Languages - C, section 6.1.2.5.</ref> लेकिन C मानक, या [[C99]] के 1999 के संशोधन द्वारा समर्थन में सुधार किया गया, जिसने मानक [[पुस्तकालय (कंप्यूटर विज्ञान)]] को विस्तारित करने के लिए कार्यों को सम्मिलित करने के लिए विस्तारित किया। <code>लॉन्ग डबल</code> जैसे कि <code>सिनल()</code> और <code>स्र्टोल्ड()</code>.


लंबे दोहरे स्थिरांक एल या एल (लोअर-केस एल) के साथ प्रत्यय वाले फ़्लोटिंग-पॉइंट स्थिरांक हैं, उदाहरण के लिए, 0.33333333333333333333333333333333L या 3.1415926535897932384626433832795029L [[चौगुनी सटीकता]] के लिए। प्रत्यय के बिना, मूल्यांकन C99#IEEE 754 फ़्लोटिंग-पॉइंट समर्थन|FLT_EVAL_METHOD पर निर्भर करता है।
लंबे दोहरे स्थिरांक L या l (लोअर-केस L) के साथ प्रत्यय वाले फ़्लोटिंग-पॉइंट स्थिरांक हैं, उदाहरण के लिए, 0.33333333333333333333333333333333L या 3.1415926535897932384626433832795029L [[चौगुनी सटीकता]] के लिए है। प्रत्यय के बिना, मूल्यांकन एफएलटी_एवल_मेथड पर निर्भर करता है।


=== कार्यान्वयन ===
=== कार्यान्वयन ===
X[[86]] आर्किटेक्चर पर, अधिकांश C (प्रोग्रामिंग लैंग्वेज) कंपाइलर लागू होते हैं <code>long double</code> C99 / C11 (C मानक संशोधन) मानकों (IEC) में निर्दिष्ट के रूप में विस्तारित परिशुद्धता#x86 विस्तारित परिशुद्धता प्रारूप | 60559 फ्लोटिंग-पॉइंट अंकगणित (अनुबंध एफ))। <!-- While not a WP:RS, http://computer-programming-forum.com/47-c-language/ae9c42837f4986aa.htm gives some insight on this. What I would really like is a source listing compilers that do and do not support this -Guy Macon 14:17, 3 May 2013 --> x86 के लिए [[Microsoft Visual C++]] एक अपवाद है, जो बनाता है <code>long double</code> के लिए एक पर्यायवाची <code>double</code>.<ref>{{Cite web |title=लंबा डबल|url=https://learn.microsoft.com/en-us/previous-versions/9cx8xs15(v=vs.140) |access-date=2022-10-06 |website=learn.microsoft.com |language=en-us}}</ref> Microsoft Windows पर Intel C++ कंपाइलर विस्तारित परिशुद्धता का समर्थन करता है, लेकिन इसके लिए <code>/Qlong&#8209;double</code> के लिए स्विच करें <code>long double</code> हार्डवेयर के विस्तारित परिशुद्धता प्रारूप के अनुरूप होने के लिए।<ref>[http://software.intel.com/en-us/articles/size-of-long-integer-type-on-different-architecture-and-os/ Intel Developer Site]</ref>
x86 आर्किटेक्चर पर, अधिकांश सी संकलनकर्ता x86 हार्डवेयर द्वारा समर्थित 80-बिट विस्तारित सटीक प्रकार के रूप में लॉन्ग डबल को लागू करते हैं (सामान्यतः डेटा संरचना संरेखण को बनाए रखने के लिए 12 या 16 बाइट्स के रूप में संग्रहीत)। <!-- While not a WP:RS, http://computer-programming-forum.com/47-c-language/ae9c42837f4986aa.htm gives some insight on this. What I would really like is a source listing compilers that do and do not support this -Guy Macon 14:17, 3 May 2013 --> x86 के लिए [[Microsoft Visual C++|माइक्रोसॉफ्ट विजुअल C++]] एक अपवाद है, जो <code>लॉन्ग डबल</code> के लिए एक पर्यायवाची <code>डबल</code> बनाता है। <ref>{{Cite web |title=लंबा डबल|url=https://learn.microsoft.com/en-us/previous-versions/9cx8xs15(v=vs.140) |access-date=2022-10-06 |website=learn.microsoft.com |language=en-us}}</ref> माइक्रोसॉफ़्ट विंडोज़ पर इंटेल C++ संकलनकर्ता विस्तारित परिशुद्धता का समर्थन करता है, लेकिन हार्डवेयर के विस्तारित सटीक प्रारूप के अनुरूप लॉन्ग डबल के लिए /क्यू<code>लॉन्ग</code>-डबल स्विच की आवश्यकता होती है। <ref>[http://software.intel.com/en-us/articles/size-of-long-integer-type-on-different-architecture-and-os/ Intel Developer Site]</ref>  
कंपाइलर भी इस्तेमाल कर सकते हैं <code>long double</code> चौगुनी परिशुद्धता के लिए #IEEE 754 चौगुनी-परिशुद्धता बाइनरी फ्लोटिंग-पॉइंट प्रारूप: बाइनरी128|IEEE 754 चौगुनी-परिशुद्धता बाइनरी फ्लोटिंग-पॉइंट प्रारूप (बाइनरी128)। [[एचपी-यूएक्स]] पर यह मामला है,<ref>{{cite book |author=Hewlett Packard |year=1992 |title=HP-UX Portability Guide - HP 9000 Computers |edition=2nd |chapter=Porting C Programs |pages=5-3 and 5-37 |url=http://www.textfiles.com/bitsavers/pdf/hp/9000_hpux/9.x/B2355-90025_HP-UX_Portability_Guide_Aug92.pdf}}</ref> [[सोलारिस (ऑपरेटिंग सिस्टम)]]/[[स्पार्क]],<ref>{{Cite web |title=आईईईई अंकगणित|url=http://docs.oracle.com/cd/E19957-01/806-3568/ncg_math.html |access-date=2022-10-06 |website=docs.oracle.com}}</ref> 64-बिट या n32 [[अनुप्रयोग बाइनरी इंटरफ़ेस]] के साथ MIPS आर्किटेक्चर,<ref>{{cite web |date=1999 |title=MIPSpro™ N32 ABI Handbook |url=http://irix7.com/techpubs/007-2816-004.pdf |accessdate=2020-05-26}}</ref> ARM आर्किटेक्चर#AArc64|64-बिट ARM (AArc64)<ref>{{cite web |date=2020-10-01 |title=Procedure Call Standard for the Arm® 64-bit Architecture (AArch64) |website=[[GitHub]] |url=https://github.com/ARM-software/abi-aa/blob/master/aapcs64/aapcs64.rst |url-status=live |archive-url=https://github.com/ARM-software/abi-aa/releases/download/2020Q3/aapcs64.pdf |archive-date=2020-10-02}}</ref> (मानक AAPCS कॉलिंग कन्वेंशन, जैसे Linux) का उपयोग करने वाले ऑपरेटिंग सिस्टम पर, और FLOAT (IEEE) के साथ z/OS<ref>{{cite web |date=2020-10-09 |title=फ़्लोटिंग-पॉइंट प्रकार|website=[[IBM]] |url=https://www.ibm.com/support/knowledgecenter/SSLTBW_2.4.0/com.ibm.zos.v2r4.cbclx01/fltvar.htm |accessdate=2020-10-09}}</ref><ref>{{cite web |last=Schwarz |first=Eric |date=June 22, 2015 |title=The IBM z13 SIMD Accelerators for Integer, String, and Floating-Point |url=http://arith22.gforge.inria.fr/slides/s1-schwarz.pdf |accessdate=July 13, 2015}}</ref><ref>{{cite journal |last1=Schwarz |first1=E. M. |last2=Krygowski |first2=C. A. |date=September 1999 |title=The S/390 G5 floating-point unit |journal=IBM Journal of Research and Development |doi=10.1147/rd.435.0707 |volume=43 |issue=5/6 |pages=707–721 |citeseerx=10.1.1.117.6711 }}</ref><!-- This third reference, which predates z/Architecture by a few months, completes the first one, by making explicit that "Extended" corresponds to the future binary128. -->. अधिकांश कार्यान्वयन सॉफ्टवेयर में हैं, लेकिन कुछ प्रोसेसरों में चौगुनी-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप # हार्डवेयर समर्थन है।


कुछ [[पावरपीसी]] सिस्टम पर,<ref>{{Cite web|title=The saga of the Power ISA 128-bit long double|url=https://www.talospace.com/2018/12/the-saga-of-power-isa-128-bit-long.html|date=2018-12-22|access-date=2021-12-26}}</ref> <code>long double</code> [[डबल-डबल (अंकगणित)]]|डबल-डबल अंकगणित के रूप में कार्यान्वित किया जाता है, जहां एक <code>long double</code> मान को दो डबल-परिशुद्धता मानों का सटीक योग माना जाता है, जो कम से कम 106-बिट सटीकता देता है; इस तरह के प्रारूप के साथ <code>long double</code> प्रकार [[IEEE फ़्लोटिंग-पॉइंट मानक]] के अनुरूप नहीं है। अन्यथा, <code>long double</code> का ही पर्यायवाची है <code>double</code> (दोहरी सटीकता), उदा. 32-बिट [[एआरएम वास्तुकला]] पर,<ref>{{cite web |year=2013 |title=ARM® Compiler toolchain Compiler Reference, Version 5.03 |at=Section 6.3 ''Basic data types'' |url=http://infocenter.arm.com/help/topic/com.arm.doc.dui0491i/DUI0491I_arm_compiler_reference.pdf |accessdate=2019-11-08}}</ref> ARM आर्किटेक्चर#AArc64|64-बिट ARM (AArc64) (Windows<ref>{{cite web |title=llvm/llvm-project |website=GitHub |url=https://github.com/llvm/llvm-project/blob/3d54976a704327aea8de85f7b2c36172e42100d9/clang/lib/Basic/Targets/AArch64.cpp#L741-L746 |access-date=2020-09-03}}</ref> और मैकओएस<ref>{{cite web |title=llvm/llvm-project |website=GitHub |url=https://github.com/llvm/llvm-project/blob/3d54976a704327aea8de85f7b2c36172e42100d9/clang/lib/Basic/Targets/AArch64.cpp#L838-L839 |access-date=2020-09-03}}</ref>) और 32-बिट MIPS पर<ref>{{cite web |date=1996 |title=System V Application Binary Interface: MIPS(r) Processor Supplement |edition=3rd |url=http://math-atlas.sourceforge.net/devel/assembly/mipsabi32.pdf |accessdate=2020-05-26}}</ref> (पुराना ABI, a.k.a. o32)।
संकलनकर्ता भी <code>लॉन्ग डबल</code> चौगुनी परिशुद्धता के लिए IEEE 754 चौगुनी-परिशुद्धता युग्मक फ्लोटिंग-पॉइंट प्रारूप (युग्मक128) इस्तेमाल कर सकते हैं।  यह [[एचपी-यूएक्स]] पर स्तिथि है,<ref>{{cite book |author=Hewlett Packard |year=1992 |title=HP-UX Portability Guide - HP 9000 Computers |edition=2nd |chapter=Porting C Programs |pages=5-3 and 5-37 |url=http://www.textfiles.com/bitsavers/pdf/hp/9000_hpux/9.x/B2355-90025_HP-UX_Portability_Guide_Aug92.pdf}}</ref> [[सोलारिस (ऑपरेटिंग सिस्टम)]]/[[स्पार्क]],<ref>{{Cite web |title=आईईईई अंकगणित|url=http://docs.oracle.com/cd/E19957-01/806-3568/ncg_math.html |access-date=2022-10-06 |website=docs.oracle.com}}</ref> 64-बिट या n32 [[अनुप्रयोग बाइनरी इंटरफ़ेस|अनुप्रयोग युग्मक इंटरफ़ेस]] के साथ MIPS आर्किटेक्चर,<ref>{{cite web |date=1999 |title=MIPSpro™ N32 ABI Handbook |url=http://irix7.com/techpubs/007-2816-004.pdf |accessdate=2020-05-26}}</ref> ARM आर्किटेक्चर#AArc64|64-बिट ARM (AArc64)<ref>{{cite web |date=2020-10-01 |title=Procedure Call Standard for the Arm® 64-bit Architecture (AArch64) |website=[[GitHub]] |url=https://github.com/ARM-software/abi-aa/blob/master/aapcs64/aapcs64.rst |url-status=live |archive-url=https://github.com/ARM-software/abi-aa/releases/download/2020Q3/aapcs64.pdf |archive-date=2020-10-02}}</ref> (मानक AAPCS कॉलिंग कन्वेंशन, जैसे Linux) का उपयोग करने वाले ऑपरेटिंग सिस्टम पर, और FLOAT (IEEE) के साथ z/OS<ref>{{cite web |date=2020-10-09 |title=फ़्लोटिंग-पॉइंट प्रकार|website=[[IBM]] |url=https://www.ibm.com/support/knowledgecenter/SSLTBW_2.4.0/com.ibm.zos.v2r4.cbclx01/fltvar.htm |accessdate=2020-10-09}}</ref><ref>{{cite web |last=Schwarz |first=Eric |date=June 22, 2015 |title=The IBM z13 SIMD Accelerators for Integer, String, and Floating-Point |url=http://arith22.gforge.inria.fr/slides/s1-schwarz.pdf |accessdate=July 13, 2015}}</ref><ref>{{cite journal |last1=Schwarz |first1=E. M. |last2=Krygowski |first2=C. A. |date=September 1999 |title=The S/390 G5 floating-point unit |journal=IBM Journal of Research and Development |doi=10.1147/rd.435.0707 |volume=43 |issue=5/6 |pages=707–721 |citeseerx=10.1.1.117.6711 }}</ref><!-- This third reference, which predates z/Architecture by a few months, completes the first one, by making explicit that "Extended" corresponds to the future binary128. -->. अधिकांश कार्यान्वयन सॉफ्टवेयर में हैं, लेकिन कुछ प्रोसेसरों में चौगुनी-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप # हार्डवेयर समर्थन है।
 
कुछ [[पावरपीसी]] सिस्टम पर,<ref>{{Cite web|title=The saga of the Power ISA 128-bit long double|url=https://www.talospace.com/2018/12/the-saga-of-power-isa-128-bit-long.html|date=2018-12-22|access-date=2021-12-26}}</ref> <code>लॉन्ग डबल</code> [[डबल-डबल (अंकगणित)]]|डबल-डबल अंकगणित के रूप में कार्यान्वित किया जाता है, जहां एक <code>लॉन्ग डबल</code> मान को दो डबल-परिशुद्धता मानों का सटीक योग माना जाता है, जो कम से कम 106-बिट सटीकता देता है; इस तरह के प्रारूप के साथ <code>लॉन्ग डबल</code> प्रकार [[IEEE फ़्लोटिंग-पॉइंट मानक]] के अनुरूप नहीं है। अन्यथा, <code>लॉन्ग डबल</code> का ही पर्यायवाची है <code>डबल</code> (दोहरी सटीकता), उदा. 32-बिट [[एआरएम वास्तुकला]] पर,<ref>{{cite web |year=2013 |title=ARM® Compiler toolchain Compiler Reference, Version 5.03 |at=Section 6.3 ''Basic data types'' |url=http://infocenter.arm.com/help/topic/com.arm.doc.dui0491i/DUI0491I_arm_compiler_reference.pdf |accessdate=2019-11-08}}</ref> ARM आर्किटेक्चर#AArc64|64-बिट ARM (AArc64) (Windows<ref>{{cite web |title=llvm/llvm-project |website=GitHub |url=https://github.com/llvm/llvm-project/blob/3d54976a704327aea8de85f7b2c36172e42100d9/clang/lib/Basic/Targets/AArch64.cpp#L741-L746 |access-date=2020-09-03}}</ref> और मैकओएस<ref>{{cite web |title=llvm/llvm-project |website=GitHub |url=https://github.com/llvm/llvm-project/blob/3d54976a704327aea8de85f7b2c36172e42100d9/clang/lib/Basic/Targets/AArch64.cpp#L838-L839 |access-date=2020-09-03}}</ref>) और 32-बिट MIPS पर<ref>{{cite web |date=1996 |title=System V Application Binary Interface: MIPS(r) Processor Supplement |edition=3rd |url=http://math-atlas.sourceforge.net/devel/assembly/mipsabi32.pdf |accessdate=2020-05-26}}</ref> (पुराना ABI, a.k.a. o32)।
 
[[जीएनयू सी कंपाइलर|जीएनयू C संकलनकर्ता]] के साथ, <code>लॉन्ग डबल</code> x86 प्रोसेसर पर 80-बिट विस्तारित परिशुद्धता है, भले ही प्रकार के लिए उपयोग किए जाने वाले भौतिक भंडारण (जो कि 96 या 128 बिट हो सकते हैं)<ref>{{Cite web |title=x86 Options (Using the GNU Compiler Collection (GCC)) |url=https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html |access-date=2022-10-06 |website=gcc.gnu.org}}</ref> कुछ अन्य आर्किटेक्चर पर, <code>लॉन्ग डबल</code> डबल-डबल (अंकगणित) हो सकता है | डबल-डबल (जैसे पावरपीसी पर<ref>{{Cite web |title=RS/6000 and PowerPC Options (Using the GNU Compiler Collection (GCC)) |url=https://gcc.gnu.org/onlinedocs/gcc/RS_002f6000-and-PowerPC-Options.html |access-date=2022-10-06 |website=gcc.gnu.org}}</ref><ref>[https://developer.apple.com/legacy/mac/library/documentation/Performance/Conceptual/Mac_OSX_Numerics/Mac_OSX_Numerics.pdf Inside Macintosh - PowerPC Numerics] {{webarchive|url=https://web.archive.org/web/20121009191824/http://developer.apple.com/legacy/mac/library/documentation/Performance/Conceptual/Mac_OSX_Numerics/Mac_OSX_Numerics.pdf |date=2012-10-09 }}</ref><ref>[https://opensource.apple.com/source/gcc/gcc-5646/gcc/config/rs6000/darwin-ldouble.c 128-bit long double support routines for Darwin]</ref>) या 128-बिट चौगुनी सटीकता (उदाहरण के लिए SPARC<ref>{{Cite web |title=स्पार्क विकल्प (जीएनयू कंपाइलर संग्रह (जीसीसी) का उपयोग करके)|url=https://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html |access-date=2022-10-06 |website=gcc.gnu.org}}</ref>). जीसीसी 4.3 के अनुसार, x86 पर एक चौगुनी परिशुद्धता भी समर्थित है, लेकिन गैर-मानक प्रकार के रूप में <code>__float128</code> इसके बजाय <code>लॉन्ग डबल</code>.<ref>{{Cite web |title=GCC 4.3 Release Series — Changes, New Features, and Fixes - GNU Project |url=https://gcc.gnu.org/gcc-4.3/changes.html |access-date=2022-10-06 |website=gcc.gnu.org}}</ref>
हालांकि x86 आर्किटेक्चर, और विशेष रूप से x86 पर [[x87]] फ़्लोटिंग-पॉइंट निर्देश, 80-बिट विस्तारित-सटीक संचालन का समर्थन करता है, प्रोसेसर को स्वचालित रूप से डबल (या यहां तक ​​​​कि एकल) परिशुद्धता के लिए स्वचालित रूप से गोल करने के लिए कॉन्फ़िगर करना संभव है। इसके विपरीत, विस्तारित-परिशुद्धता मोड में, विस्तारित परिशुद्धता का उपयोग मध्यवर्ती संकलक-जनित गणनाओं के लिए किया जा सकता है, भले ही अंतिम परिणाम कम सटीकता (यानी C99#IEEE 754 फ़्लोटिंग-पॉइंट समर्थन|FLT_EVAL_METHOD == 2) पर संग्रहीत हों। [[लिनक्स]] पर जीसीसी के साथ, 80-बिट विस्तारित परिशुद्धता डिफ़ॉल्ट है; कई [[बीएसडी]] ऑपरेटिंग सिस्टम (फ्रीबीएसडी और [[ओपनबीएसडी]]) पर, डबल-प्रेसिजन मोड डिफ़ॉल्ट है, और <code>लॉन्ग डबल</code> संचालन प्रभावी रूप से दोगुनी सटीकता के लिए कम हो जाते हैं।<ref name="introgcc">Brian J. Gough and Richard M. Stallman, ''An Introduction to GCC'', section 8.6 [http://www.network-theory.co.uk/docs/gccintro/gccintro_70.html Floating-point issues] (Network Theory Ltd., 2004).</ref> ([[नेटबीएसडी]] 7.0 और बाद में, हालांकि, 80-बिट विस्तारित परिशुद्धता के लिए डिफ़ॉल्ट है <ref>{{cite web |title=Significant changes from NetBSD 6.0 to 7.0 |url=https://www.netbsd.org/changes/changes-7.0.html}}</ref>). हालाँकि, FLDCW फ़्लोटिंग-पॉइंट लोड कंट्रोल-वर्ड निर्देश के माध्यम से एक व्यक्तिगत कार्यक्रम के भीतर इसे ओवरराइड करना संभव है।<ref name="introgcc" />x86_64 पर, बीएसडी 80-बिट विस्तारित परिशुद्धता के लिए डिफ़ॉल्ट हैं। Visual C++ के साथ माइक्रोसॉफ़्ट विंडोज़ भी प्रोसेसर को डिफ़ॉल्ट रूप से डबल-प्रिसिजन मोड में सेट करता है, लेकिन इसे फिर से एक व्यक्तिगत प्रोग्राम (जैसे द्वारा) में ओवरराइड किया जा सकता है। <code>_controlfp_s</code> विजुअल C ++ में कार्य करता है<ref>{{Cite web |title=Visual Studio 2005 Retired documentation |url=https://www.microsoft.com/en-us/download/details.aspx?id=55984 |access-date=2022-10-06 |website=Microsoft Download Center |language=en-us}}</ref>). दूसरी ओर x86 के लिए इंटेल C++ संकलनकर्ता, डिफ़ॉल्ट रूप से एक्सटेंडेड-प्रिसिजन मोड को सक्षम करता है।<ref>Intel C++ Compiler Documentation, [http://www.nacad.ufrj.br/online/intel/Documentation/en_US/compiler_c/main_cls/index.htm Using the -fp-model (/fp) Option].</ref> IA-32 OS X पर, <code>लॉन्ग डबल</code> 80-बिट विस्तारित परिशुद्धता है।<ref>{{Cite web|url=https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/LowLevelABI/130-IA-32_Function_Calling_Conventions/IA32.html|title = IA-32 Function Calling Conventions}}</ref>


[[जीएनयू सी कंपाइलर]] के साथ, <code>long double</code> x86 प्रोसेसर पर 80-बिट विस्तारित परिशुद्धता है, भले ही प्रकार के लिए उपयोग किए जाने वाले भौतिक भंडारण (जो कि 96 या 128 बिट हो सकते हैं)<ref>{{Cite web |title=x86 Options (Using the GNU Compiler Collection (GCC)) |url=https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html |access-date=2022-10-06 |website=gcc.gnu.org}}</ref> कुछ अन्य आर्किटेक्चर पर, <code>long double</code> डबल-डबल (अंकगणित) हो सकता है | डबल-डबल (जैसे पावरपीसी पर<ref>{{Cite web |title=RS/6000 and PowerPC Options (Using the GNU Compiler Collection (GCC)) |url=https://gcc.gnu.org/onlinedocs/gcc/RS_002f6000-and-PowerPC-Options.html |access-date=2022-10-06 |website=gcc.gnu.org}}</ref><ref>[https://developer.apple.com/legacy/mac/library/documentation/Performance/Conceptual/Mac_OSX_Numerics/Mac_OSX_Numerics.pdf Inside Macintosh - PowerPC Numerics] {{webarchive|url=https://web.archive.org/web/20121009191824/http://developer.apple.com/legacy/mac/library/documentation/Performance/Conceptual/Mac_OSX_Numerics/Mac_OSX_Numerics.pdf |date=2012-10-09 }}</ref><ref>[https://opensource.apple.com/source/gcc/gcc-5646/gcc/config/rs6000/darwin-ldouble.c 128-bit long double support routines for Darwin]</ref>) या 128-बिट चौगुनी सटीकता (उदाहरण के लिए SPARC<ref>{{Cite web |title=स्पार्क विकल्प (जीएनयू कंपाइलर संग्रह (जीसीसी) का उपयोग करके)|url=https://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html |access-date=2022-10-06 |website=gcc.gnu.org}}</ref>). जीसीसी 4.3 के अनुसार, x86 पर एक चौगुनी परिशुद्धता भी समर्थित है, लेकिन गैर-मानक प्रकार के रूप में <code>__float128</code> इसके बजाय <code>long double</code>.<ref>{{Cite web |title=GCC 4.3 Release Series — Changes, New Features, and Fixes - GNU Project |url=https://gcc.gnu.org/gcc-4.3/changes.html |access-date=2022-10-06 |website=gcc.gnu.org}}</ref>
हालांकि x86 आर्किटेक्चर, और विशेष रूप से x86 पर [[x87]] फ़्लोटिंग-पॉइंट निर्देश, 80-बिट विस्तारित-सटीक संचालन का समर्थन करता है, प्रोसेसर को स्वचालित रूप से डबल (या यहां तक ​​​​कि एकल) परिशुद्धता के लिए स्वचालित रूप से गोल करने के लिए कॉन्फ़िगर करना संभव है। इसके विपरीत, विस्तारित-परिशुद्धता मोड में, विस्तारित परिशुद्धता का उपयोग मध्यवर्ती संकलक-जनित गणनाओं के लिए किया जा सकता है, भले ही अंतिम परिणाम कम सटीकता (यानी C99#IEEE 754 फ़्लोटिंग-पॉइंट समर्थन|FLT_EVAL_METHOD == 2) पर संग्रहीत हों। [[लिनक्स]] पर जीसीसी के साथ, 80-बिट विस्तारित परिशुद्धता डिफ़ॉल्ट है; कई [[बीएसडी]] ऑपरेटिंग सिस्टम (फ्रीबीएसडी और [[ओपनबीएसडी]]) पर, डबल-प्रेसिजन मोड डिफ़ॉल्ट है, और <code>long double</code> संचालन प्रभावी रूप से दोगुनी सटीकता के लिए कम हो जाते हैं।<ref name=introgcc>Brian J. Gough and Richard M. Stallman, ''An Introduction to GCC'', section 8.6 [http://www.network-theory.co.uk/docs/gccintro/gccintro_70.html Floating-point issues] (Network Theory Ltd., 2004).</ref> ([[नेटबीएसडी]] 7.0 और बाद में, हालांकि, 80-बिट विस्तारित परिशुद्धता के लिए डिफ़ॉल्ट है <ref>{{cite web |title=Significant changes from NetBSD 6.0 to 7.0 |url=https://www.netbsd.org/changes/changes-7.0.html}}</ref>). हालाँकि, FLDCW फ़्लोटिंग-पॉइंट लोड कंट्रोल-वर्ड निर्देश के माध्यम से एक व्यक्तिगत कार्यक्रम के भीतर इसे ओवरराइड करना संभव है।<ref name=introgcc/>x86_64 पर, बीएसडी 80-बिट विस्तारित परिशुद्धता के लिए डिफ़ॉल्ट हैं। Visual C++ के साथ Microsoft Windows भी प्रोसेसर को डिफ़ॉल्ट रूप से डबल-प्रिसिजन मोड में सेट करता है, लेकिन इसे फिर से एक व्यक्तिगत प्रोग्राम (जैसे द्वारा) में ओवरराइड किया जा सकता है। <code>_controlfp_s</code> विजुअल सी ++ में कार्य करता है<ref>{{Cite web |title=Visual Studio 2005 Retired documentation |url=https://www.microsoft.com/en-us/download/details.aspx?id=55984 |access-date=2022-10-06 |website=Microsoft Download Center |language=en-us}}</ref>). दूसरी ओर x86 के लिए Intel C++ कंपाइलर, डिफ़ॉल्ट रूप से एक्सटेंडेड-प्रिसिजन मोड को सक्षम करता है।<ref>Intel C++ Compiler Documentation, [http://www.nacad.ufrj.br/online/intel/Documentation/en_US/compiler_c/main_cls/index.htm Using the -fp-model (/fp) Option].</ref> IA-32 OS X पर, <code>long double</code> 80-बिट विस्तारित परिशुद्धता है।<ref>{{Cite web|url=https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/LowLevelABI/130-IA-32_Function_Calling_Conventions/IA32.html|title = IA-32 Function Calling Conventions}}</ref>





Revision as of 11:58, 23 May 2023

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

C मेंलॉन्ग डबल

इतिहास

लॉन्ग डबल प्रकार मूल 1989 C मानक में उपस्थित था,[1] लेकिन C मानक, या C99 के 1999 के संशोधन द्वारा समर्थन में सुधार किया गया, जिसने मानक पुस्तकालय (कंप्यूटर विज्ञान) को विस्तारित करने के लिए कार्यों को सम्मिलित करने के लिए विस्तारित किया। लॉन्ग डबल जैसे कि सिनल() और स्र्टोल्ड().

लंबे दोहरे स्थिरांक L या l (लोअर-केस L) के साथ प्रत्यय वाले फ़्लोटिंग-पॉइंट स्थिरांक हैं, उदाहरण के लिए, 0.33333333333333333333333333333333L या 3.1415926535897932384626433832795029L चौगुनी सटीकता के लिए है। प्रत्यय के बिना, मूल्यांकन एफएलटी_एवल_मेथड पर निर्भर करता है।

कार्यान्वयन

x86 आर्किटेक्चर पर, अधिकांश सी संकलनकर्ता x86 हार्डवेयर द्वारा समर्थित 80-बिट विस्तारित सटीक प्रकार के रूप में लॉन्ग डबल को लागू करते हैं (सामान्यतः डेटा संरचना संरेखण को बनाए रखने के लिए 12 या 16 बाइट्स के रूप में संग्रहीत)। x86 के लिए माइक्रोसॉफ्ट विजुअल C++ एक अपवाद है, जो लॉन्ग डबल के लिए एक पर्यायवाची डबल बनाता है। [2] माइक्रोसॉफ़्ट विंडोज़ पर इंटेल C++ संकलनकर्ता विस्तारित परिशुद्धता का समर्थन करता है, लेकिन हार्डवेयर के विस्तारित सटीक प्रारूप के अनुरूप लॉन्ग डबल के लिए /क्यूलॉन्ग-डबल स्विच की आवश्यकता होती है। [3]

संकलनकर्ता भी लॉन्ग डबल चौगुनी परिशुद्धता के लिए IEEE 754 चौगुनी-परिशुद्धता युग्मक फ्लोटिंग-पॉइंट प्रारूप (युग्मक128) इस्तेमाल कर सकते हैं। यह एचपी-यूएक्स पर स्तिथि है,[4] सोलारिस (ऑपरेटिंग सिस्टम)/स्पार्क,[5] 64-बिट या n32 अनुप्रयोग युग्मक इंटरफ़ेस के साथ MIPS आर्किटेक्चर,[6] ARM आर्किटेक्चर#AArc64|64-बिट ARM (AArc64)[7] (मानक AAPCS कॉलिंग कन्वेंशन, जैसे Linux) का उपयोग करने वाले ऑपरेटिंग सिस्टम पर, और FLOAT (IEEE) के साथ z/OS[8][9][10]. अधिकांश कार्यान्वयन सॉफ्टवेयर में हैं, लेकिन कुछ प्रोसेसरों में चौगुनी-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप # हार्डवेयर समर्थन है।

कुछ पावरपीसी सिस्टम पर,[11] लॉन्ग डबल डबल-डबल (अंकगणित)|डबल-डबल अंकगणित के रूप में कार्यान्वित किया जाता है, जहां एक लॉन्ग डबल मान को दो डबल-परिशुद्धता मानों का सटीक योग माना जाता है, जो कम से कम 106-बिट सटीकता देता है; इस तरह के प्रारूप के साथ लॉन्ग डबल प्रकार IEEE फ़्लोटिंग-पॉइंट मानक के अनुरूप नहीं है। अन्यथा, लॉन्ग डबल का ही पर्यायवाची है डबल (दोहरी सटीकता), उदा. 32-बिट एआरएम वास्तुकला पर,[12] ARM आर्किटेक्चर#AArc64|64-बिट ARM (AArc64) (Windows[13] और मैकओएस[14]) और 32-बिट MIPS पर[15] (पुराना ABI, a.k.a. o32)।

जीएनयू C संकलनकर्ता के साथ, लॉन्ग डबल x86 प्रोसेसर पर 80-बिट विस्तारित परिशुद्धता है, भले ही प्रकार के लिए उपयोग किए जाने वाले भौतिक भंडारण (जो कि 96 या 128 बिट हो सकते हैं)[16] कुछ अन्य आर्किटेक्चर पर, लॉन्ग डबल डबल-डबल (अंकगणित) हो सकता है | डबल-डबल (जैसे पावरपीसी पर[17][18][19]) या 128-बिट चौगुनी सटीकता (उदाहरण के लिए SPARC[20]). जीसीसी 4.3 के अनुसार, x86 पर एक चौगुनी परिशुद्धता भी समर्थित है, लेकिन गैर-मानक प्रकार के रूप में __float128 इसके बजाय लॉन्ग डबल.[21] हालांकि x86 आर्किटेक्चर, और विशेष रूप से x86 पर x87 फ़्लोटिंग-पॉइंट निर्देश, 80-बिट विस्तारित-सटीक संचालन का समर्थन करता है, प्रोसेसर को स्वचालित रूप से डबल (या यहां तक ​​​​कि एकल) परिशुद्धता के लिए स्वचालित रूप से गोल करने के लिए कॉन्फ़िगर करना संभव है। इसके विपरीत, विस्तारित-परिशुद्धता मोड में, विस्तारित परिशुद्धता का उपयोग मध्यवर्ती संकलक-जनित गणनाओं के लिए किया जा सकता है, भले ही अंतिम परिणाम कम सटीकता (यानी C99#IEEE 754 फ़्लोटिंग-पॉइंट समर्थन|FLT_EVAL_METHOD == 2) पर संग्रहीत हों। लिनक्स पर जीसीसी के साथ, 80-बिट विस्तारित परिशुद्धता डिफ़ॉल्ट है; कई बीएसडी ऑपरेटिंग सिस्टम (फ्रीबीएसडी और ओपनबीएसडी) पर, डबल-प्रेसिजन मोड डिफ़ॉल्ट है, और लॉन्ग डबल संचालन प्रभावी रूप से दोगुनी सटीकता के लिए कम हो जाते हैं।[22] (नेटबीएसडी 7.0 और बाद में, हालांकि, 80-बिट विस्तारित परिशुद्धता के लिए डिफ़ॉल्ट है [23]). हालाँकि, FLDCW फ़्लोटिंग-पॉइंट लोड कंट्रोल-वर्ड निर्देश के माध्यम से एक व्यक्तिगत कार्यक्रम के भीतर इसे ओवरराइड करना संभव है।[22]x86_64 पर, बीएसडी 80-बिट विस्तारित परिशुद्धता के लिए डिफ़ॉल्ट हैं। Visual C++ के साथ माइक्रोसॉफ़्ट विंडोज़ भी प्रोसेसर को डिफ़ॉल्ट रूप से डबल-प्रिसिजन मोड में सेट करता है, लेकिन इसे फिर से एक व्यक्तिगत प्रोग्राम (जैसे द्वारा) में ओवरराइड किया जा सकता है। _controlfp_s विजुअल C ++ में कार्य करता है[24]). दूसरी ओर x86 के लिए इंटेल C++ संकलनकर्ता, डिफ़ॉल्ट रूप से एक्सटेंडेड-प्रिसिजन मोड को सक्षम करता है।[25] IA-32 OS X पर, लॉन्ग डबल 80-बिट विस्तारित परिशुद्धता है।[26]


अन्य विनिर्देश

CORBA में (3.0 के विनिर्देशन से, जो IEEE 754-1985|ANSI/IEEE Standard 754-1985 को इसके संदर्भ के रूप में उपयोग करता है), लंबा डबल डेटा प्रकार एक IEEE डबल-विस्तारित फ़्लोटिंग-पॉइंट संख्या का प्रतिनिधित्व करता है, जिसमें कम से कम एक प्रतिपादक होता है लंबाई में 15 बिट और GIOP/IIOP CDR के साथ कम से कम 64 बिट्स का एक हस्ताक्षरित अंश, जिसका फ़्लोटिंग-पॉइंट प्रकार फ़्लोटिंग पॉइंट नंबरों के लिए IEEE मानक स्वरूपों का सटीक रूप से पालन करता है, इसे IEEE 754-2008 बाइनरी128 a.k.a. चौगुनी प्रतीत होता है उस नाम का उपयोग किए बिना सटीकता।

यह भी देखें

संदर्भ

  1. ANSI/ISO 9899-1990 American National Standard for Programming Languages - C, section 6.1.2.5.
  2. "लंबा डबल". learn.microsoft.com (in English). Retrieved 2022-10-06.
  3. Intel Developer Site
  4. Hewlett Packard (1992). "Porting C Programs". HP-UX Portability Guide - HP 9000 Computers (PDF) (2nd ed.). pp. 5-3 and 5-37.
  5. "आईईईई अंकगणित". docs.oracle.com. Retrieved 2022-10-06.
  6. "MIPSpro™ N32 ABI Handbook" (PDF). 1999. Retrieved 2020-05-26.
  7. "Procedure Call Standard for the Arm® 64-bit Architecture (AArch64)". GitHub. 2020-10-01. Archived (PDF) from the original on 2020-10-02.
  8. "फ़्लोटिंग-पॉइंट प्रकार". IBM. 2020-10-09. Retrieved 2020-10-09.
  9. Schwarz, Eric (June 22, 2015). "The IBM z13 SIMD Accelerators for Integer, String, and Floating-Point" (PDF). Retrieved July 13, 2015.
  10. Schwarz, E. M.; Krygowski, C. A. (September 1999). "The S/390 G5 floating-point unit". IBM Journal of Research and Development. 43 (5/6): 707–721. CiteSeerX 10.1.1.117.6711. doi:10.1147/rd.435.0707.
  11. "The saga of the Power ISA 128-bit long double". 2018-12-22. Retrieved 2021-12-26.
  12. "ARM® Compiler toolchain Compiler Reference, Version 5.03" (PDF). 2013. Section 6.3 Basic data types. Retrieved 2019-11-08.
  13. "llvm/llvm-project". GitHub. Retrieved 2020-09-03.
  14. "llvm/llvm-project". GitHub. Retrieved 2020-09-03.
  15. "System V Application Binary Interface: MIPS(r) Processor Supplement" (PDF) (3rd ed.). 1996. Retrieved 2020-05-26.
  16. "x86 Options (Using the GNU Compiler Collection (GCC))". gcc.gnu.org. Retrieved 2022-10-06.
  17. "RS/6000 and PowerPC Options (Using the GNU Compiler Collection (GCC))". gcc.gnu.org. Retrieved 2022-10-06.
  18. Inside Macintosh - PowerPC Numerics Archived 2012-10-09 at the Wayback Machine
  19. 128-bit long double support routines for Darwin
  20. "स्पार्क विकल्प (जीएनयू कंपाइलर संग्रह (जीसीसी) का उपयोग करके)". gcc.gnu.org. Retrieved 2022-10-06.
  21. "GCC 4.3 Release Series — Changes, New Features, and Fixes - GNU Project". gcc.gnu.org. Retrieved 2022-10-06.
  22. 22.0 22.1 Brian J. Gough and Richard M. Stallman, An Introduction to GCC, section 8.6 Floating-point issues (Network Theory Ltd., 2004).
  23. "Significant changes from NetBSD 6.0 to 7.0".
  24. "Visual Studio 2005 Retired documentation". Microsoft Download Center (in English). Retrieved 2022-10-06.
  25. Intel C++ Compiler Documentation, Using the -fp-model (/fp) Option.
  26. "IA-32 Function Calling Conventions".