लॉन्ग डबल

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

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

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

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

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

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

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

अन्य विनिर्देश
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. चौगुनी प्रतीत होता है उस नाम का उपयोग किए बिना सटीकता।

यह भी देखें

 * चौगुनी सटीकता
 * विस्तारित परिशुद्धता