जीएनयू मल्टीपल प्रिसिजन अरिथमेटिक लाइब्रेरी
Developer(s) | GNU Project |
---|---|
Initial release | 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. |
Repository | gmplib |
Written in | C, (C++, assembly optionally) |
Type | Mathematical software |
License | Dual LGPLv3 and GPLv2[2] |
Website | gmplib |
जीएनयू मल्टीपल मनमाना-सटीक अंकगणित लाइब्रेरी (जीएमपी) मनमाना-परिशुद्धता अंकगणित के लिए एक मुफ्त सॉफ्टवेयर लाइब्रेरी है, जो साइन (गणित) पूर्णांक, तर्कसंगत डेटा प्रकार और फ़्लोटिंग-पॉइंट अंकगणित | फ़्लोटिंग-पॉइंट संख्याओं पर काम करती है।[2] उपलब्ध आभासी मेमोरी (ऑपरेंड 2 तक हो सकते हैं) को छोड़कर परिशुद्धता की कोई व्यावहारिक सीमा नहीं है32−32-बिट मशीनों पर 1 बिट्स और 264-बिट मशीनों पर 37बिट्स)।[3][4] जीएमपी में फ़ंक्शंस का एक समृद्ध सेट है, और फ़ंक्शंस का एक नियमित इंटरफ़ेस है। मूल इंटरफ़ेस C (प्रोग्रामिंग भाषा) के लिए है, लेकिन आवरण समारोह अन्य भाषाओं के लिए मौजूद है, जिनमें Ada (प्रोग्रामिंग भाषा), C++, C शार्प (प्रोग्रामिंग भाषा)|C#, जूलिया (प्रोग्रामिंग भाषा), .NET फ्रेमवर्क|.NET, शामिल हैं। ओकैमल, पर्ल, पीएचपी, पायथन (प्रोग्रामिंग भाषा), आर (प्रोग्रामिंग भाषा), रूबी (प्रोग्रामिंग भाषा), और रस्ट (प्रोग्रामिंग भाषा)। 2008 से पहले, जावा वर्चुअल मशीन, कैफ़े, जावा में निर्मित मनमाने परिशुद्धता अंकगणित का समर्थन करने के लिए जीएमपी का उपयोग करती थी।[5] कुछ ही समय बाद, जीएनयू क्लासपाथ में जीएमपी समर्थन जोड़ा गया।[6] जीएमपी के मुख्य लक्ष्य अनुप्रयोग क्रिप्टोग्राफी अनुप्रयोग और अनुसंधान, इंटरनेट सुरक्षा अनुप्रयोग और कंप्यूटर बीजगणित प्रणाली हैं।
जीएमपी का लक्ष्य सभी ओपेरंड आकारों के लिए किसी भी अन्य बिग्नम लाइब्रेरी से तेज़ होना है। ऐसा करने में कुछ महत्वपूर्ण कारक हैं:
- मूल अंकगणितीय प्रकार के रूप में पूर्ण शब्द (डेटा प्रकार) का उपयोग करना।
- विभिन्न ऑपरेंड आकारों के लिए विभिन्न कलन विधि का उपयोग करना; जो एल्गोरिदम बहुत बड़ी संख्याओं के लिए तेज़ होते हैं वे आमतौर पर छोटी संख्याओं के लिए धीमे होते हैं।
- सबसे महत्वपूर्ण आंतरिक लूप के लिए अत्यधिक अनुकूलन (कंप्यूटर विज्ञान) असेंबली भाषा कोड, विभिन्न केंद्रीय प्रसंस्करण इकाई के लिए विशेष।
पहली GMP रिलीज़ 1991 में की गई थी। इसे लगातार विकसित और रखरखाव किया जाता है।[7] जीएमपी जीएनयू परियोजना का हिस्सा है (हालांकि इसकी वेबसाइट gnu.org से दूर होने से भ्रम हो सकता है), और इसे जीएनयू लेसर जनरल पब्लिक लाइसेंस (एलजीपीएल) के तहत वितरित किया जाता है।
जीएमपी का उपयोग मेथेमेटिका जैसे कई कंप्यूटर बीजगणित प्रणालियों में पूर्णांक अंकगणित के लिए किया जाता है[8] और मेपल (सॉफ्टवेयर)।[9] इसका उपयोग कम्प्यूटेशनल ज्यामिति एल्गोरिदम लाइब्रेरी (सीजीएएल) में भी किया जाता है।
जीएनयू कंपाइलर संग्रह (GCC) बनाने के लिए GMP की आवश्यकता होती है।[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
तुलना के लिए, कोई इसके बजाय निम्नलिखित समकक्ष C++ प्रोग्राम लिख सकता है। ( -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;
}
भाषा बाइंडिंग
Library name | Language | License |
---|---|---|
GNU Multi-Precision Library | C, C++ | LGPL |
Math::GMP | Perl | LGPL |
Math::GMPz, Math::GMPf and Math::GMPq | Perl | Artistic License v1.0 + GPL v1.0-or-later |
General Multiprecision Python Project | Python | LGPL |
R package 'gmp' | R | GPL |
The RubyGems project | Ruby | Apache 2.0 |
Rust FFI bindings for GMP, MPFR and MPC | Rust | LGPL |
GNU Multi-Precision Library for PHP | PHP | PHP |
GNU Multi-Precision Routines for SBCL | Common Lisp | Public Domain |
Ch GMP | Ch | Proprietary |
Parallel GMP Wrapper for BMDFM | BMDFM LISP / C | Public Domain |
Glasgow Haskell Compiler (The implementation of Integer is basically a binding to GMP) |
Haskell | BSD |
luajit-gmp | LuaJIT | MIT |
gmp-wrapper-for-delphi | Delphi | MIT |
Zarith | OCaml | LGPL |
Math.Gmp.Native Library | .NET | MIT |
nim-gmp | Nim | MIT |
JGMP | Java | LGPL |
यह भी देखें
- जीएनयू एमपीएफआर - जीएनयू एमपी पर आधारित, सही राउंडिंग के साथ मनमानी-सटीक गणना के लिए एक पुस्तकालय
- संख्याओं के लिए क्लास लाइब्रेरी - मनमानी परिशुद्धता के लिए एक क्लास लाइब्रेरी
- एमपीआईआर (गणित सॉफ्टवेयर) - जीएमपी का एक कांटा, अब इसका रखरखाव नहीं किया जाता है
संदर्भ
- ↑ "GNU MP archive". Retrieved 2018-12-03.
- ↑ 2.0 2.1 "What is GMP?". Retrieved 2014-04-07.
- ↑ Granlund, Torbjorn (2009-07-06). "Problems with mpz_set_str and huge strings". Retrieved 2013-03-17.
- ↑ "GMP 6.0 News". Retrieved 2019-10-04.
- ↑ Hughes, Andrew John (2008-02-28). "Removed GMP math?". Retrieved 2013-03-17.
- ↑ "GNU Classpath 0.98 "Better Late Than Never"". 2009-02-05. Retrieved 2013-03-17.
- ↑ "GNU MP Bignum Library". Retrieved 2018-12-03.
- ↑ "The Mathematica Kernel: Issues in the Design and Implementation". October 2006. Retrieved 2013-03-17.
- ↑ "The GNU Multiple Precision (GMP) Library". Maplesoft. Retrieved 2013-03-17.
- ↑ 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.