लॉन्ग डबल
Floating-point formats |
---|
IEEE 754 |
|
Other |
सी (प्रोग्रामिंग भाषा) और संबंधित प्रोग्रामिंग भाषाओं में, long double
फ़्लोटिंग-पॉइंट अंकगणितीय | फ़्लोटिंग-पॉइंट डेटा प्रकार को संदर्भित करता है जो अक्सर डबल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप से अधिक सटीक होता है, हालांकि भाषा मानक के लिए केवल उतना ही सटीक होना आवश्यक है जितना कि double
. सी के अन्य फ़्लोटिंग-पॉइंट प्रकारों के साथ, यह आवश्यक रूप से IEEE 754 के लिए मैप नहीं हो सकता है।
==long double
सी == में
=== इतिहास === long double
ई> प्रकार मूल 1989 सी मानक में मौजूद था,[1] लेकिन C मानक, या C99 के 1999 के संशोधन द्वारा समर्थन में सुधार किया गया, जिसने मानक पुस्तकालय (कंप्यूटर विज्ञान) को विस्तारित करने के लिए कार्यों को शामिल करने के लिए विस्तारित किया। long double
जैसे कि sinl()
और strtold()
.
लंबे दोहरे स्थिरांक एल या एल (लोअर-केस एल) के साथ प्रत्यय वाले फ़्लोटिंग-पॉइंट स्थिरांक हैं, उदाहरण के लिए, 0.33333333333333333333333333333333L या 3.1415926535897932384626433832795029L चौगुनी सटीकता के लिए। प्रत्यय के बिना, मूल्यांकन C99#IEEE 754 फ़्लोटिंग-पॉइंट समर्थन|FLT_EVAL_METHOD पर निर्भर करता है।
कार्यान्वयन
X86 आर्किटेक्चर पर, अधिकांश C (प्रोग्रामिंग लैंग्वेज) कंपाइलर लागू होते हैं long double
C99 / C11 (C मानक संशोधन) मानकों (IEC) में निर्दिष्ट के रूप में विस्तारित परिशुद्धता#x86 विस्तारित परिशुद्धता प्रारूप | 60559 फ्लोटिंग-पॉइंट अंकगणित (अनुबंध एफ))। x86 के लिए Microsoft Visual C++ एक अपवाद है, जो बनाता है long double
के लिए एक पर्यायवाची double
.[2] Microsoft Windows पर Intel C++ कंपाइलर विस्तारित परिशुद्धता का समर्थन करता है, लेकिन इसके लिए /Qlong‑double
के लिए स्विच करें long double
हार्डवेयर के विस्तारित परिशुद्धता प्रारूप के अनुरूप होने के लिए।[3]
कंपाइलर भी इस्तेमाल कर सकते हैं long double
चौगुनी परिशुद्धता के लिए #IEEE 754 चौगुनी-परिशुद्धता बाइनरी फ्लोटिंग-पॉइंट प्रारूप: बाइनरी128|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] long double
डबल-डबल (अंकगणित)|डबल-डबल अंकगणित के रूप में कार्यान्वित किया जाता है, जहां एक long double
मान को दो डबल-परिशुद्धता मानों का सटीक योग माना जाता है, जो कम से कम 106-बिट सटीकता देता है; इस तरह के प्रारूप के साथ long double
प्रकार IEEE फ़्लोटिंग-पॉइंट मानक के अनुरूप नहीं है। अन्यथा, long double
का ही पर्यायवाची है double
(दोहरी सटीकता), उदा. 32-बिट एआरएम वास्तुकला पर,[12] ARM आर्किटेक्चर#AArc64|64-बिट ARM (AArc64) (Windows[13] और मैकओएस[14]) और 32-बिट MIPS पर[15] (पुराना ABI, a.k.a. o32)।
जीएनयू सी कंपाइलर के साथ, long double
x86 प्रोसेसर पर 80-बिट विस्तारित परिशुद्धता है, भले ही प्रकार के लिए उपयोग किए जाने वाले भौतिक भंडारण (जो कि 96 या 128 बिट हो सकते हैं)[16] कुछ अन्य आर्किटेक्चर पर, long double
डबल-डबल (अंकगणित) हो सकता है | डबल-डबल (जैसे पावरपीसी पर[17][18][19]) या 128-बिट चौगुनी सटीकता (उदाहरण के लिए SPARC[20]). जीसीसी 4.3 के अनुसार, x86 पर एक चौगुनी परिशुद्धता भी समर्थित है, लेकिन गैर-मानक प्रकार के रूप में __float128
इसके बजाय long double
.[21]
हालांकि x86 आर्किटेक्चर, और विशेष रूप से x86 पर x87 फ़्लोटिंग-पॉइंट निर्देश, 80-बिट विस्तारित-सटीक संचालन का समर्थन करता है, प्रोसेसर को स्वचालित रूप से डबल (या यहां तक कि एकल) परिशुद्धता के लिए स्वचालित रूप से गोल करने के लिए कॉन्फ़िगर करना संभव है। इसके विपरीत, विस्तारित-परिशुद्धता मोड में, विस्तारित परिशुद्धता का उपयोग मध्यवर्ती संकलक-जनित गणनाओं के लिए किया जा सकता है, भले ही अंतिम परिणाम कम सटीकता (यानी C99#IEEE 754 फ़्लोटिंग-पॉइंट समर्थन|FLT_EVAL_METHOD == 2) पर संग्रहीत हों। लिनक्स पर जीसीसी के साथ, 80-बिट विस्तारित परिशुद्धता डिफ़ॉल्ट है; कई बीएसडी ऑपरेटिंग सिस्टम (फ्रीबीएसडी और ओपनबीएसडी) पर, डबल-प्रेसिजन मोड डिफ़ॉल्ट है, और long double
संचालन प्रभावी रूप से दोगुनी सटीकता के लिए कम हो जाते हैं।[22] (नेटबीएसडी 7.0 और बाद में, हालांकि, 80-बिट विस्तारित परिशुद्धता के लिए डिफ़ॉल्ट है [23]). हालाँकि, FLDCW फ़्लोटिंग-पॉइंट लोड कंट्रोल-वर्ड निर्देश के माध्यम से एक व्यक्तिगत कार्यक्रम के भीतर इसे ओवरराइड करना संभव है।[22]x86_64 पर, बीएसडी 80-बिट विस्तारित परिशुद्धता के लिए डिफ़ॉल्ट हैं। Visual C++ के साथ Microsoft Windows भी प्रोसेसर को डिफ़ॉल्ट रूप से डबल-प्रिसिजन मोड में सेट करता है, लेकिन इसे फिर से एक व्यक्तिगत प्रोग्राम (जैसे द्वारा) में ओवरराइड किया जा सकता है। _controlfp_s
विजुअल सी ++ में कार्य करता है[24]). दूसरी ओर x86 के लिए Intel C++ कंपाइलर, डिफ़ॉल्ट रूप से एक्सटेंडेड-प्रिसिजन मोड को सक्षम करता है।[25] IA-32 OS X पर, long double
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. चौगुनी प्रतीत होता है उस नाम का उपयोग किए बिना सटीकता।
यह भी देखें
- चौगुनी सटीकता
- विस्तारित परिशुद्धता
संदर्भ
- ↑ ANSI/ISO 9899-1990 American National Standard for Programming Languages - C, section 6.1.2.5.
- ↑ "लंबा डबल". learn.microsoft.com (in English). Retrieved 2022-10-06.
- ↑ Intel Developer Site
- ↑ Hewlett Packard (1992). "Porting C Programs". HP-UX Portability Guide - HP 9000 Computers (PDF) (2nd ed.). pp. 5-3 and 5-37.
- ↑ "आईईईई अंकगणित". docs.oracle.com. Retrieved 2022-10-06.
- ↑ "MIPSpro™ N32 ABI Handbook" (PDF). 1999. Retrieved 2020-05-26.
- ↑ "Procedure Call Standard for the Arm® 64-bit Architecture (AArch64)". GitHub. 2020-10-01. Archived (PDF) from the original on 2020-10-02.
- ↑ "फ़्लोटिंग-पॉइंट प्रकार". IBM. 2020-10-09. Retrieved 2020-10-09.
- ↑ Schwarz, Eric (June 22, 2015). "The IBM z13 SIMD Accelerators for Integer, String, and Floating-Point" (PDF). Retrieved July 13, 2015.
- ↑ 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.
- ↑ "The saga of the Power ISA 128-bit long double". 2018-12-22. Retrieved 2021-12-26.
- ↑ "ARM® Compiler toolchain Compiler Reference, Version 5.03" (PDF). 2013. Section 6.3 Basic data types. Retrieved 2019-11-08.
- ↑ "llvm/llvm-project". GitHub. Retrieved 2020-09-03.
- ↑ "llvm/llvm-project". GitHub. Retrieved 2020-09-03.
- ↑ "System V Application Binary Interface: MIPS(r) Processor Supplement" (PDF) (3rd ed.). 1996. Retrieved 2020-05-26.
- ↑ "x86 Options (Using the GNU Compiler Collection (GCC))". gcc.gnu.org. Retrieved 2022-10-06.
- ↑ "RS/6000 and PowerPC Options (Using the GNU Compiler Collection (GCC))". gcc.gnu.org. Retrieved 2022-10-06.
- ↑ Inside Macintosh - PowerPC Numerics Archived 2012-10-09 at the Wayback Machine
- ↑ 128-bit long double support routines for Darwin
- ↑ "स्पार्क विकल्प (जीएनयू कंपाइलर संग्रह (जीसीसी) का उपयोग करके)". gcc.gnu.org. Retrieved 2022-10-06.
- ↑ "GCC 4.3 Release Series — Changes, New Features, and Fixes - GNU Project". gcc.gnu.org. Retrieved 2022-10-06.
- ↑ 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).
- ↑ "Significant changes from NetBSD 6.0 to 7.0".
- ↑ "Visual Studio 2005 Retired documentation". Microsoft Download Center (in English). Retrieved 2022-10-06.
- ↑ Intel C++ Compiler Documentation, Using the -fp-model (/fp) Option.
- ↑ "IA-32 Function Calling Conventions".