जीएनयू मल्टीपल प्रिसिजन अरिथमेटिक लाइब्रेरी

From Vigyanwiki
Revision as of 10:52, 15 July 2023 by Manidh (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
जीएनयू बहु प्रिसिजन गणितीय लाइब्रेरी
Developer(s)जीएनयू परियोजना
Initial release1991; 33 years ago (1991)[1]
Stable release
Script error: The module returned a nil value. It is supposed to return an export table. / Script error: The module returned a nil value. It is supposed to return an export table.
Preview release
Script error: The module returned a nil value. It is supposed to return an export table. / Script error: The module returned a nil value. It is supposed to return an export table.
Repositorygmplib.org/repo/
Written inसी, (सी++, असेंबली वैकल्पिक रूप से)
Typeगणितीय सॉफ्टवेयर
Licenseड्यूल एलजीपीएलवी-3 और जीपीएलवी-2[2]
Websitegmplib.org

जीएनयू बहु प्रिसिजन गणितीय लाइब्रेरी (जीएमपी) अपेक्षाकृत प्रिसिजन अंकगणित के लिए एक मुक्त सॉफ्टवेयर लाइब्रेरी है, जो अंकीय पूर्णांकों, तर्कसंगत संख्याओं और दशमलव संख्याओं पर कार्य करती है।[2] उपलब्ध मेमोरी द्वारा निहित सीमाओं को छोड़कर प्रिसिजन की कोई भी प्रयोगिक सीमा नहीं है। यह संचालित 32-बिट उपकरणों पर 232−1 बिट और 64 बिट उपकरणों पर 237 बिट तक हो सकती है।[3][4] जीएमपी में फ़ंक्शंन का एक मूल समूह और फ़ंक्शंन का एक नियमित इंटरफ़ेस होता है जो मूल इंटरफ़ेस सी प्रोग्रामिंग के लिए उपयोगी है, लेकिन एडीए, सी++, सी, जूलिया (प्रोग्रामिंग भाषा), डॉटनेट, ओकैमल, पर्ल, पीएचपी, पायथन, आर, रूबी और रस्ट सहित अन्य भाषाओं के लिए रैपर सम्मिलित हैं। 2008 से पहले कैफ़े जावा वर्चुअल मशीने जावा से निर्मित अपेक्षाकृत प्रिसिजन अंकगणित का समर्थन करने के लिए जीएमपी का उपयोग करती थी।[5] कुछ ही समय बाद जीएमपी समर्थन को जीएनयू क्लास एड्रेस में जोड़ दिया गया था।[6]

जीएमपी के मुख्य लक्ष्य एप्लिकेशन के लिए क्रिप्टोग्राफी एप्लिकेशन, अनुसंधान इंटरनेट सुरक्षा एप्लिकेशन और कंप्यूटर बीजगणितीय एप्लिकेशन हैं। जीएमपी का लक्ष्य सभी संचालित एप्लिकेशनों के लिए किसी भी अन्य बिग्नम लाइब्रेरी से तीव्र होना है। ऐसा करने के लिए कुछ महत्वपूर्ण फ़ंक्शंन हैं:

  • मूल अंकगणितीय प्रकार के रूप में पूर्ण स्ट्रिंग (डेटा प्रकार) का उपयोग करना।
  • विभिन्न संचालित एप्लिकेशनों के लिए विभिन्न एल्गोरिथम का उपयोग करना, जो एल्गोरिदम बहुत बड़ी संख्याओं के लिए तीव्र होते हैं वे सामान्यतः छोटी संख्याओं के लिए अपेक्षाकृत धीमे होते हैं।
  • विभिन्न प्रसंस्करण के लिए विशेषीकृत सबसे महत्वपूर्ण आंतरिक लूपों के लिए अत्यधिक अनुकूलित असेंबली भाषा कोड।

पहला जीएमपी प्रकाशन 1991 में प्रारम्भ किया गया था। इसको निरंतर विकसित और अपडेट किया जाता है।[7] यह जीएमपी जीएनयू परियोजना का एक भाग है। हालांकि इसकी वेबसाइट 'gnu.org' से दूर होने से भ्रम हो सकता है और इसे जीएनयू लेसर पब्लिक लाइसेंस (एलजीपीएल) के अंतर्गत प्रसारित किया जाता है। जीएमपी का उपयोग अंकगणितीय जैसे कि कई कंप्यूटर बीजगणितीय प्रणालियों में पूर्णांक अंकगणित और मेपल (सॉफ्टवेयर) के लिए किया जाता है।[8][9] इसका उपयोग कम्प्यूटेशनल ज्यामितीय एल्गोरिदम लाइब्रेरी (सीजीएएल) में भी किया जाता है। जीएनयू कंपाइलर संग्रह (जीसीसी) बनाने के लिए जीएमपी की आवश्यकता होती है।[10]

उदाहरण

यहां सी प्रोग्रामिंग कोड का एक उदाहरण दिया गया है जो बड़ी संख्याओं को गुणा करने और मुद्रित करने के लिए जीएमपी लाइब्रेरी का उपयोग करता है:

#include <stdio.h>
#include <gmp.h>

int main(void) {
  mpz_t x, y, result;

  mpz_init_set_str(x, "7612058254738945", 10);
  mpz_init_set_str(y, "9263591128439081", 10);
  mpz_init(result);

  mpz_mul(result, x, y);
  gmp_printf("    %Zd\n"
             "*\n"
             "    %Zd\n"
             "--------------------\n"
             "%Zd\n", x, y, result);

  /* free used memory */
  mpz_clear(x);
  mpz_clear(y);
  mpz_clear(result);

  return 0;
}

यह कोड 7612058254738945 × 9263591128439081 के मान की गणना करता है और इस प्रोग्राम को संकलित करने और चलाने से निम्न परिणाम प्राप्त होता है। यूनिक्स-प्रकार के सिस्टम पर संकलन करते समय -lgmp का उपयोग किया जाता है।

    7612058254738945
*
    9263591128439081
--------------------
70514995317761165008628990709545

उपरोक्त की तुलना के लिए कोई भी इसके अतिरिक्त निम्नलिखित सी++ प्रोग्राम लिख सकता है। यूनिक्स प्रकार के सिस्टम पर संकलन करते समय -lgmpxx -lgmp का उपयोग किया जाता है।

#include <iostream>
#include <gmpxx.h>

int main() {
  mpz_class x("7612058254738945");
  mpz_class y("9263591128439081");

  std::cout << "    " << x << "\n"
            << "*\n"
            << "    " << y << "\n"
            << "--------------------\n"
            << x * y << "\n";

  return 0;
}

भाषा बाइंडिंग

लाइब्रेरी का नाम भाषा लाइसेंस
जीएनयू मल्टी-प्रिसिजन लाइब्रेरी सी, सी++ एलजीपीएल
गणित::जीएमपी पर्ल एलजीपीएल
गणित::जीएमपीजेड, गणित::जीएमपीएफ

और गणित::जीएमपीक्यू

पर्ल लाइसेंस वी 1.0 + जीपीएल वी 1.0 संस्करण
सामान्य बहुपरिशुद्धता पायथन परियोजना पाइथन एलजीपीएल
आर पैकेज 'जीएमपी' आर जीपीएल
रूबीजेम्स परियोजना रूबी अपाचे 2.0
जीएमपी, एमपीएफआर और एमपीसी के लिए जंग एफएफआई बाइंडिंग रस्ट एलजीपीएल
पीएचपी के लिए जीएनयू मल्टी-प्रिसिजन लाइब्रेरी पीएचपी पीएचपी
एसबीसीएल के लिए जीएनयू मल्टी-प्रिसिजन रूटीन सामान्य लिस्प पब्लिक डोमेन
सीएच जीएमपी सीएच प्रोप्राइटरी
बीएमडीएफएम के लिए समानांतर जीएमपी रैपर बीएमडीएफएम एलआईएसपी/सी पब्लिक डोमेन
ग्लासगो हास्केल कंपाइलर
Integerका कार्यान्वयन मूल रूप से जीएमपी के लिए बाध्यकारी है।
हास्केल बीएसडी
लुआजित-जीएमपी लुआजीत एमआईटी
डेल्फ़ी के लिए जीएमपी-रैपर डेल्फी एमआईटी
ज़रीथ ओकैमल एलजीपीएल
गणित.जीएमपी.नेटिव लाइब्रेरी डॉटनेट एमआईटी
निम-जीएमपी एनआईएम एमआईटी
जेजीएमपी जावा एलजीपीएल

यह भी देखें

संदर्भ

  1. "GNU MP archive". Retrieved 2018-12-03.
  2. 2.0 2.1 "What is GMP?". Retrieved 2014-04-07.
  3. Granlund, Torbjorn (2009-07-06). "Problems with mpz_set_str and huge strings". Retrieved 2013-03-17.
  4. "GMP 6.0 News". Retrieved 2019-10-04.
  5. Hughes, Andrew John (2008-02-28). "Removed GMP math?". Retrieved 2013-03-17.
  6. "GNU Classpath 0.98 "Better Late Than Never"". 2009-02-05. Retrieved 2013-03-17.
  7. "GNU MP Bignum Library". Retrieved 2018-12-03.
  8. "The Mathematica Kernel: Issues in the Design and Implementation". October 2006. Retrieved 2013-03-17.
  9. "The GNU Multiple Precision (GMP) Library". Maplesoft. Retrieved 2013-03-17.
  10. GCC uses the GNU MPFR library, which in turn relies on GMP. "GCC 4.3 Release Series: Changes, New Features, and Fixes". 2012-11-02. Retrieved 2013-03-17.


बाहरी संबंध

  • No URL found. Please specify a URL here or add one to Wikidata.