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

From Vigyanwiki
No edit summary
No edit summary
 
(8 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Short description|Floating-point data type in C family languages}}
{{lowercase title}}
{{floating-point}}
{{floating-point}}


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


== C में<code>लॉन्ग डबल</code> ==
== C में<code>लॉन्ग डबल</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>.
<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>


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


=== कार्यान्वयन ===
=== कार्यान्वयन ===
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>  
x86 शिल्प विद्या पर, अधिकांश सी संकलनकर्ता x86 हार्डवेयर द्वारा समर्थित 80-बिट विस्तारित सटीक प्रकार के रूप में लॉन्ग डबल को लागू करते हैं (सामान्यतः डेटा संरचना संरेखण को बनाए रखने के लिए 12 या 16 बाइट्स के रूप में संग्रहीत)। 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>लॉन्ग डबल</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. -->. अधिकांश कार्यान्वयन सॉफ्टवेयर में हैं, लेकिन कुछ प्रोसेसरों में चौगुनी-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप # हार्डवेयर समर्थन है।
संकलनकर्ता भी <code>लॉन्ग डबल</code> चौगुनी परिशुद्धता के लिए आईईईई 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 [[अनुप्रयोग बाइनरी इंटरफ़ेस|अनुप्रयोग युग्मक अंतरापृष्ठ]] के साथ एमआईपीएस शिल्प विद्या,<ref>{{cite web |date=1999 |title=MIPSpro™ N32 ABI Handbook |url=http://irix7.com/techpubs/007-2816-004.pdf |accessdate=2020-05-26}}</ref> एआरएम शिल्प विद्या 64-बिट एआरएम (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> (मानक एएपीसीएस कॉलिंग अधिवेशन, जैसे लिनक्स) का उपयोग करने वाले ऑपरेटिंग सिस्टम पर, और एफएलओएटी (आईईईई) के साथ 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> अधिकांश कार्यान्वयन सॉफ्टवेयर में हैं, लेकिन कुछ प्रोसेसरों में चौगुनी-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप समर्थन है।
 
कुछ [[पावरपीसी]] सिस्टम पर,<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>


कुछ [[पावरपीसी]] सिस्टम पर,<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> एआरएम शिल्प विद्या 64-बिट एआरएम (AArc64) (विंडोज<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-बिट एमआईपीएस पर<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-बिट चौगुनी सटीकता (उदाहरण के लिए स्पार्क<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>__फ्लोट128</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#आईईईई 754 फ़्लोटिंग-पॉइंट समर्थन एफएलटी_एवल_मेथड == 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>)। हालाँकि, एफएलडीसीडब्ल्यू फ़्लोटिंग-पॉइंट लोड कंट्रोल-वर्ड निर्देश के माध्यम से एक व्यक्तिगत कार्यक्रम के भीतर इसे ओवरराइड करना संभव है। <ref name="introgcc" /> x86_64 पर, बीएसडी 80-बिट विस्तारित परिशुद्धता के लिए स्वतः निर्धारित हैं। विजुअल 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>
== अन्य विनिर्देश ==
== अन्य विनिर्देश ==
[[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. चौगुनी प्रतीत होता है उस नाम का उपयोग किए बिना सटीकता।
[[CORBA|सीओआरबीए]] में (3.0 के विनिर्देशन से, जो आईईईई 754-1985|ANSI/आईईईई मानक 754-1985 को इसके संदर्भ के रूप में उपयोग करता है), लंबा डबल डेटा प्रकार एक आईईईई युग्म-विस्तारित फ़्लोटिंग-पॉइंट संख्या का प्रतिनिधित्व करता है, जिसमें कम से कम एक प्रतिपादक होता है लंबाई में 15 बिट और जीओपी/आईआईओपी सीडीआर के साथ कम से कम 64 बिट्स का एक हस्ताक्षरित अंश, जिसका GIOP/IIOP CDR, फ़्लोटिंग-पॉइंट प्रकार फ़्लोटिंग पॉइंट नंबरों के लिए आईईईई मानक स्वरूपों का सटीक रूप से पालन करता है, इसे [[IEEE 754-2008|आईईईई 754-2008]] युग्मक 128 ए. के. . उस नाम का उपयोग किए बिना सटीकता चौगुनी प्रतीत होती है।


== यह भी देखें ==
== यह भी देखें ==
Line 34: Line 30:
<references/>
<references/>


{{data types}}
{{DEFAULTSORT:Long Double}}
 
{{DEFAULTSORT:Long Double}}[[Category: कंप्यूटर अंकगणित]] [[Category: डेटा के प्रकार]] [[Category: सी (प्रोग्रामिंग भाषा)]]
 
 


[[Category: Machine Translated Page]]
[[Category:CS1 English-language sources (en)]]
[[Category:Created On 18/05/2023]]
[[Category:Created On 18/05/2023|Long Double]]
[[Category:Lua-based templates|Long Double]]
[[Category:Machine Translated Page|Long Double]]
[[Category:Pages with script errors|Long Double]]
[[Category:Templates Vigyan Ready|Long Double]]
[[Category:Templates that add a tracking category|Long Double]]
[[Category:Templates that generate short descriptions|Long Double]]
[[Category:Templates using TemplateData|Long Double]]
[[Category:Webarchive template wayback links]]
[[Category:कंप्यूटर अंकगणित|Long Double]]
[[Category:डेटा के प्रकार|Long Double]]
[[Category:सी (प्रोग्रामिंग भाषा)|Long Double]]

Latest revision as of 13:10, 7 November 2023

C (प्रोग्रामिंग लैंग्वेज) और संबंधित प्रोग्रामिंग भाषाओं में, लॉन्ग डबल फ़्लोटिंग-पॉइंट डेटा प्रकार को संदर्भित करता है जो प्रायः डबल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप से अधिक सटीक होता है, हालांकि लैंग्वेज मानक के लिए केवल उतना ही सटीक होना आवश्यक है जितना कि डबल. C के अन्य फ़्लोटिंग-पॉइंट प्रकारों के साथ, यह आवश्यक रूप से आईईईई 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]

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

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

जीएनयू C संकलनकर्ता के साथ, लॉन्ग डबल x86 संसाधक पर 80-बिट विस्तारित परिशुद्धता है, भले ही प्रकार के लिए उपयोग किए जाने वाले भौतिक भंडारण (जो कि 96 या 128 बिट हो सकते हैं)[16] कुछ अन्य शिल्प विद्या पर, लॉन्ग डबल डबल-डबल (अंकगणित) हो सकता है | डबल-डबल (जैसे पावरपीसी पर[17][18][19]) या 128-बिट चौगुनी सटीकता (उदाहरण के लिए स्पार्क[20])। जीसीसी 4.3 के अनुसार, x86 पर एक चौगुनी परिशुद्धता भी समर्थित है, लेकिन गैर-मानक प्रकार के रूप में __फ्लोट128 इसके स्थान पर लॉन्ग डबल।[21]

हालांकि x86 शिल्प विद्या, और विशेष रूप से x86 पर x87 फ़्लोटिंग-पॉइंट निर्देश, 80-बिट विस्तारित-सटीक संचालन का समर्थन करता है, संसाधक को स्वचालित रूप से डबल (या यहां तक ​​​​कि एकल) परिशुद्धता के लिए स्वचालित रूप से गोल करने के लिए समनुरूप करना संभव है। इसके विपरीत, विस्तारित-परिशुद्धता प्रणाली में, विस्तारित परिशुद्धता का उपयोग मध्यवर्ती संकलक-जनित गणनाओं के लिए किया जा सकता है, भले ही अंतिम परिणाम कम सटीकता (यानी C99#आईईईई 754 फ़्लोटिंग-पॉइंट समर्थन एफएलटी_एवल_मेथड == 2) पर संग्रहीत हैं। लिनक्स पर जीसीसी के साथ, 80-बिट विस्तारित परिशुद्धता स्वतः निर्धारित है; कई बीएसडी ऑपरेटिंग सिस्टम (फ्रीबीएसडी और ओपनबीएसडी) पर, डबल-प्रेसिजन प्रणाली स्वतः निर्धारित है, और लॉन्ग डबल संचालन प्रभावी रूप से दोगुनी सटीकता के लिए कम हो जाते हैं। [22] (नेटबीएसडी 7.0 और बाद में, हालांकि, 80-बिट विस्तारित परिशुद्धता के लिए स्वतः निर्धारित है [23])। हालाँकि, एफएलडीसीडब्ल्यू फ़्लोटिंग-पॉइंट लोड कंट्रोल-वर्ड निर्देश के माध्यम से एक व्यक्तिगत कार्यक्रम के भीतर इसे ओवरराइड करना संभव है। [22] x86_64 पर, बीएसडी 80-बिट विस्तारित परिशुद्धता के लिए स्वतः निर्धारित हैं। विजुअल C++ के साथ माइक्रोसॉफ़्ट विंडोज़ भी संसाधक को स्वतः निर्धारित रूप से युग्म-यथार्थमापी प्रणाली में सेट करता है, लेकिन इसे फिर से एक व्यक्तिगत प्रोग्राम (जैसे द्वारा) में ओवरराइड किया जा सकता है। _controlfp_s विजुअल C ++ में कार्य करता है[24]). दूसरी ओर x86 के लिए इंटेल C++ संकलनकर्ता, स्वतः निर्धारित रूप से विस्तृत-यथार्थमापी प्रणाली को सक्षम करता है।[25] IA-32 OS X पर, लॉन्ग डबल 80-बिट विस्तारित परिशुद्धता है।[26]

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

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

यह भी देखें

संदर्भ

  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".