लॉन्ग डबल

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

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

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

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

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

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

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

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

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

यह भी देखें

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