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

From Vigyanwiki
No edit summary
No edit summary
Line 21: Line 21:
}}
}}


[[मनमाना-सटीक अंकगणित|'''जीएनयू बहु प्रिसिजन गणितीय लाइब्रेरी''']] (जीएमपी) अपेक्षाकृत प्रिसिजन अंकगणित के लिए एक [[मुफ्त सॉफ्टवेयर|मुक्त सॉफ्टवेयर]] लाइब्रेरी है, जो हस्ताक्षरित पूर्णांकों, तर्कसंगत संख्याओं और [[फ़्लोटिंग-पॉइंट अंकगणित|फ़्लोटिंग-पॉइंट]] संख्याओं पर कार्य करती है।<ref name="what">{{cite web
[[मनमाना-सटीक अंकगणित|'''जीएनयू बहु प्रिसिजन गणितीय लाइब्रेरी''']] (जीएमपी) अपेक्षाकृत प्रिसिजन अंकगणित के लिए एक [[मुफ्त सॉफ्टवेयर|मुक्त सॉफ्टवेयर]] लाइब्रेरी है, जो अंकीय पूर्णांकों, तर्कसंगत संख्याओं और [[फ़्लोटिंग-पॉइंट अंकगणित|दशमलव]] संख्याओं पर कार्य करती है।<ref name="what">{{cite web
| url=https://gmplib.org/#WHAT
| url=https://gmplib.org/#WHAT
| title=What is GMP?
| title=What is GMP?
| access-date=2014-04-07}}</ref> उपलब्ध मेमोरी द्वारा निहित सीमाओं को छोड़कर परिशुद्धता की कोई व्यावहारिक सीमा नहीं है, संचालित 32-बिट उपकरणों पर 2<sup>32−1</sup> बिट और 64 बिट उपकरणों पर 2<sup>37</sup> बिट तक हो सकते हैं।<ref>{{cite web
| access-date=2014-04-07}}</ref> उपलब्ध मेमोरी द्वारा निहित सीमाओं को छोड़कर प्रिसिजन की कोई भी प्रयोगिक सीमा नहीं है। यह संचालित 32-बिट उपकरणों पर 2<sup>32−1</sup> बिट और 64 बिट उपकरणों पर 2<sup>37</sup> बिट तक हो सकती है।<ref>{{cite web
| url=https://gmplib.org/list-archives/gmp-bugs/2009-July/001538.html
| url=https://gmplib.org/list-archives/gmp-bugs/2009-July/001538.html
| title=Problems with mpz_set_str and huge strings
| title=Problems with mpz_set_str and huge strings
Line 33: Line 33:
| url=https://gmplib.org/gmp6.0.html
| url=https://gmplib.org/gmp6.0.html
| title=GMP 6.0 News
| title=GMP 6.0 News
| access-date=2019-10-04}}</ref> जीएमपी में फ़ंक्शंस का एक समृद्ध समूह है और फ़ंक्शंस का एक नियमित इंटरफ़ेस होता है जो मूल इंटरफ़ेस सी प्रोग्रामिंग के लिए है, लेकिन एडीए, सी++, सी, [[जूलिया (प्रोग्रामिंग भाषा)]], डॉटनेट, [[ओकैमल]], [[पर्ल]], [[पीएचपी]], [[पायथन (प्रोग्रामिंग भाषा)|पायथन]], [[आर (प्रोग्रामिंग भाषा)|आर]], [[रूबी (प्रोग्रामिंग भाषा)|रूबी]] और रस्ट सहित अन्य भाषाओं के लिए रैपर सम्मिलित हैं। 2008 से पहले कैफ़े एक जावा वर्चुअल मशीने जावा से निर्मित अपेक्षाकृत प्रिसिजन अंकगणित का समर्थन करने के लिए जीएमपी का उपयोग करती थी।<ref>{{cite web
| access-date=2019-10-04}}</ref> जीएमपी में फ़ंक्शंन का एक मूल समूह और फ़ंक्शंन का एक नियमित इंटरफ़ेस होता है जो मूल इंटरफ़ेस सी प्रोग्रामिंग के लिए उपयोगी है, लेकिन एडीए, सी++, सी, [[जूलिया (प्रोग्रामिंग भाषा)]], डॉटनेट, [[ओकैमल]], [[पर्ल]], [[पीएचपी]], [[पायथन (प्रोग्रामिंग भाषा)|पायथन]], [[आर (प्रोग्रामिंग भाषा)|आर]], [[रूबी (प्रोग्रामिंग भाषा)|रूबी]] और रस्ट सहित अन्य भाषाओं के लिए रैपर सम्मिलित हैं। 2008 से पहले कैफ़े जावा वर्चुअल मशीने जावा से निर्मित अपेक्षाकृत प्रिसिजन अंकगणित का समर्थन करने के लिए जीएमपी का उपयोग करती थी।<ref>{{cite web
| url=http://www.kaffe.org/pipermail/kaffe/2008-February/191039.html
| url=http://www.kaffe.org/pipermail/kaffe/2008-February/191039.html
| title=Removed GMP math?
| title=Removed GMP math?
Line 45: Line 45:
| access-date=2013-03-17}}</ref>
| access-date=2013-03-17}}</ref>


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


पहला जीएमपी प्रकाशन 1991 में किया गया था। इसको निरंतर विकसित और अपडेट किया जाता है।<ref name="main">{{cite web
पहला जीएमपी प्रकाशन 1991 में प्रारम्भ किया गया था। इसको निरंतर विकसित और अपडेट किया जाता है।<ref name="main">{{cite web
  | url=https://gmplib.org/
  | url=https://gmplib.org/
  | title=GNU MP Bignum Library
  | title=GNU MP Bignum Library
  | access-date=2018-12-03}}</ref> जीएमपी [[जीएनयू]] परियोजना का भाग है। हालांकि इसकी वेबसाइट 'gnu.org' से दूर होने से भ्रम हो सकता है और इसे [[जीएनयू लेसर जनरल पब्लिक लाइसेंस|जीएनयू लेसर पब्लिक लाइसेंस]] (एलजीपीएल) के अंतर्गट वितरित किया जाता है। जीएमपी का उपयोग [[मेथेमेटिका|अंकगणितीय]] जैसे कि कई कंप्यूटर बीजगणितीय प्रणालियों में पूर्णांक अंकगणित और [[मेपल (सॉफ्टवेयर)]] के लिए किया जाता है।<ref>{{cite web
  | access-date=2018-12-03}}</ref> यह जीएमपी [[जीएनयू]] परियोजना का एक भाग है। हालांकि इसकी वेबसाइट 'gnu.org' से दूर होने से भ्रम हो सकता है और इसे [[जीएनयू लेसर जनरल पब्लिक लाइसेंस|जीएनयू लेसर पब्लिक लाइसेंस]] (एलजीपीएल) के अंतर्गत प्रसारित किया जाता है। जीएमपी का उपयोग [[मेथेमेटिका|अंकगणितीय]] जैसे कि कई कंप्यूटर बीजगणितीय प्रणालियों में पूर्णांक अंकगणित और [[मेपल (सॉफ्टवेयर)]] के लिए किया जाता है।<ref>{{cite web
| url=https://library.wolfram.com/infocenter/Conferences/7518/Macalester_talk.txt
| url=https://library.wolfram.com/infocenter/Conferences/7518/Macalester_talk.txt
| title=The Mathematica Kernel: Issues in the Design and Implementation
| title=The Mathematica Kernel: Issues in the Design and Implementation
Line 61: Line 61:
| title= The GNU Multiple Precision (GMP) Library
| title= The GNU Multiple Precision (GMP) Library
| publisher=[[Maplesoft]]
| publisher=[[Maplesoft]]
| access-date=2013-03-17}}</ref> इसका उपयोग [[कम्प्यूटेशनल ज्यामिति एल्गोरिदम लाइब्रेरी]] (सीजीएएल) में भी किया जाता है। [[जीएनयू कंपाइलर संग्रह]] (जीसीसी) बनाने के लिए जीएमपी की आवश्यकता होती है।<ref>GCC uses the [[GNU MPFR]] library, which in turn relies on GMP. {{cite web
| access-date=2013-03-17}}</ref> इसका उपयोग [[कम्प्यूटेशनल ज्यामिति एल्गोरिदम लाइब्रेरी|कम्प्यूटेशनल ज्यामितीय एल्गोरिदम लाइब्रेरी]] (सीजीएएल) में भी किया जाता है। [[जीएनयू कंपाइलर संग्रह]] (जीसीसी) बनाने के लिए जीएमपी की आवश्यकता होती है।<ref>GCC uses the [[GNU MPFR]] library, which in turn relies on GMP. {{cite web
| url=https://gcc.gnu.org/gcc-4.3/changes.html#mpfropts
| url=https://gcc.gnu.org/gcc-4.3/changes.html#mpfropts
| title=GCC 4.3 Release Series: Changes, New Features, and Fixes
| title=GCC 4.3 Release Series: Changes, New Features, and Fixes
Line 68: Line 68:
== उदाहरण ==
== उदाहरण ==


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


<syntaxhighlight lang="C">
<syntaxhighlight lang="C">
Line 96: Line 96:
}
}
</syntaxhighlight>
</syntaxhighlight>
यह कोड 7612058254738945 × 9263591128439081 के मान की गणना करता है और इस प्रोग्राम को संकलित करने और चलाने से यह परिणाम प्राप्त होता है। यूनिक्स-प्रकार के सिस्टम पर संकलन करते समय <code>-lgmp</code> का उपयोग किया जाता है।
यह कोड 7612058254738945 × 9263591128439081 के मान की गणना करता है और इस प्रोग्राम को संकलित करने और चलाने से निम्न परिणाम प्राप्त होता है। यूनिक्स-प्रकार के सिस्टम पर संकलन करते समय <code>-lgmp</code> का उपयोग किया जाता है।


<syntaxhighlight lang="text">
<syntaxhighlight lang="text">
Line 206: Line 206:
== यह भी देखें ==
== यह भी देखें ==
* [[जीएनयू एमपीएफआर]] - जीएनयू एमपी के आधार पर परिशुद्धता के साथ अपेक्षाकृत शुद्ध गणना के लिए लाइब्रेरी
* [[जीएनयू एमपीएफआर]] - जीएनयू एमपी के आधार पर परिशुद्धता के साथ अपेक्षाकृत शुद्ध गणना के लिए लाइब्रेरी
* [[संख्याओं के लिए क्लास लाइब्रेरी]] - अपेक्षाकृत परिशुद्धता के लिए क्लास लाइब्रेरी
* [[संख्याओं के लिए क्लास लाइब्रेरी]] - अपेक्षाकृत प्रिसिजन के लिए क्लास लाइब्रेरी
* [[एमपीआईआर (गणित सॉफ्टवेयर)]] - जीएमपी का फॉर्क, प्रायः अब इसको अपडेट नहीं किया जाता है।
* [[एमपीआईआर (गणित सॉफ्टवेयर)]] - जीएमपी का फॉर्क, प्रायः अब इसको अपडेट नहीं किया जाता है।



Revision as of 08:22, 10 July 2023

जीएनयू बहु प्रिसिजन गणितीय लाइब्रेरी
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.