~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ EC15C3247A8F17C62CF454B03462C643__1710529080 ✰
Заголовок документа оригинал.:
✰ GNU Multiple Precision Arithmetic Library - Wikipedia ✰
Заголовок документа перевод.:
✰ Библиотека арифметики множественной точности GNU — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/GNU_Multiple_Precision_Arithmetic_Library ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/ec/43/ec15c3247a8f17c62cf454b03462c643.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/ec/43/ec15c3247a8f17c62cf454b03462c643__translat.html ✰
Дата и время сохранения документа:
✰ 18.06.2024 00:39:43 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 15 March 2024, at 21:58 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Библиотека арифметики множественной точности GNU — Википедия Jump to content

Библиотека арифметики множественной точности GNU

Из Википедии, бесплатной энциклопедии
Библиотека арифметики множественной точности GNU
Разработчики) Проект GNU
Начальная версия 1991 год ; 33 года назад ( 1991 ) [1]
Стабильная версия
6.3.0 [2]  Отредактируйте это в Викиданных / 30 июля 2023 г.
Репозиторий gmplib .org /репо /
Написано в C , ( C++ , сборка необязательно)
Тип Математическое программное обеспечение
Лицензия Двойная лицензия LGPLv3 и GPLv2 [3]
Веб-сайт gmplib .org

GNU Multiple Precision Arithmetic Library ( GMP ) — бесплатная библиотека для арифметики произвольной точности , работающая с со знаком целыми числами , рациональными числами и числами с плавающей запятой . [3] Практических ограничений точности нет, за исключением тех, которые подразумеваются доступной памятью (операнды могут иметь до 2 32 −1 бит на 32-битных машинах и 2 37 бит на 64-битных машинах). [4] [5] GMP имеет богатый набор функций, причем функции имеют обычный интерфейс. Базовый интерфейс предназначен для C , но существуют оболочки для других языков, включая Ada , C++ , C# , Julia , .NET , OCaml , Perl , PHP , Python , R , Ruby и Rust . До 2008 года Kaffe , виртуальная машина Java , использовала GMP для поддержки встроенной в Java арифметики произвольной точности. [6] Вскоре после этого в GNU Classpath была добавлена ​​поддержка GMP . [7]

Основными целевыми приложениями GMP являются криптографические приложения и исследования, приложения интернет-безопасности и системы компьютерной алгебры .

GMP стремится быть быстрее любой другой библиотеки bignum для всех размеров операндов. Вот некоторые важные факторы, способствующие этому:

  • Полные слова являются основным типом для всей арифметики.
  • разные алгоритмы используются операндов Для разных размеров ; алгоритмы, которые более эффективны при работе с большими числами, не используются при работе с малыми числами.
  • Сборки (специализированные для разных процессоров ) используются в наиболее распространенных внутренних циклах для оптимизации . их максимальной

Первый выпуск GMP был выпущен в 1991 году. Он постоянно развивается и поддерживается. [8]

GMP является частью проекта GNU (хотя его веб-сайт находится за пределами gnu.org, что может вызвать путаницу) и распространяется под лицензией GNU Lesser General Public License (LGPL).

GMP используется для целочисленной арифметики во многих системах компьютерной алгебры, таких как Mathematica. [9] и Клен . [10] Он также используется в Библиотеке алгоритмов вычислительной геометрии (CGAL).

GMP необходим для создания коллекции компиляторов GNU (GCC). [11]

Примеры [ править ]

Вот пример кода C, показывающий использование библиотеки GMP для умножения и печати больших чисел:

#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  (  результат  ); 

    mpz_mul  (  результат  ,   х  ,   у  ); 
    gmp_printf  (  " %Zd  \n  " 
              "*  \n  " 
              " %Zd  \n  " 
              "--------------------  \n  " 
              "%Zd  \n  "  ,   х  ,   у  ,   результат  ); 

    /* освобождаем используемую память */ 
   mpz_clear  (  x  ); 
    mpz_clear  (  у  ); 
    mpz_clear  (  результат  ); 

    вернуть   0  ; 
  } 

Этот код вычисляет значение 7612058254738945 × 9263591128439081.

Компиляция и запуск этой программы дает такой результат. ( -lgmp флаг используется при компиляции в системах типа Unix.)

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

Для сравнения вместо этого можно написать следующую эквивалентную программу на C++. ( -lgmpxx -lgmp флаги используются при компиляции в системах типа Unix.)

#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  "  ; 

    вернуть   0  ; 
  } 

Языковые привязки [ править ]

Название библиотеки Язык Лицензия
Библиотека многоточности GNU С , С++ LGPL
Математика::GMP Перл LGPL
Math::GMPz , Math::GMPf и Math::GMPq Перл Художественная лицензия v1.0 + GPL v1.0 или новее
Общий проект Multiprecision Python Питон LGPL
Пакет R «gmp» р лицензия GPL
Проект RubyGems Рубин Апач 2.0
Крепления Rust FFI для GMP, MPFR и MPC Ржавчина LGPL
Библиотека GNU Multi-Precision для PHP PHP PHP
Подпрограммы многоточности GNU для SBCL Общий Лисп Всеобщее достояние
Чемпион GMP Ч Собственный
Параллельная оболочка GMP для BMDFM БМДФМ LISP/C Всеобщее достояние
Глазго Хаскелл-компилятор
(Реализация Integer
по сути является привязкой к GMP)
Хаскелл БСД
luajit-gmp ИгратьДополнительно С
GMP-обертка для Delphi Дельфи С
Зарит OCaml LGPL
Math.Gmp.Нативная библиотека .СЕТЬ С
ним-GMP Nim С
JGMP Джава LGPL

См. также [ править ]

  • GNU MPFR — библиотека для вычислений произвольной точности с правильным округлением, основанная на GNU MP.
  • CLN — библиотека классов для произвольной точности
  • MPIR – ответвление GMP, больше не поддерживается.

Ссылки [ править ]

  1. ^ «Архив GNU MP» . Проверено 03 декабря 2018 г.
  2. ^ Торбьорн Гранлунд (30 июля 2023 г.). «Выпущен GMP 6.3.0» . Проверено 30 июля 2023 г.
  3. ^ Перейти обратно: а б «Что такое GMP?» . Проверено 7 апреля 2014 г.
  4. ^ Гранлунд, Торбьорн (6 июля 2009 г.). «Проблемы с mpz_set_str и огромными строками» . Проверено 17 марта 2013 г.
  5. ^ «Новости GMP 6.0» . Проверено 4 октября 2019 г.
  6. ^ Хьюз, Эндрю Джон (28 февраля 2008 г.). «Удалена математика GMP?» . Проверено 17 марта 2013 г.
  7. ^ «GNU Classpath 0.98 «Лучше поздно, чем никогда» » . 05 февраля 2009 г. Проверено 17 марта 2013 г.
  8. ^ «Библиотека GNU MP Bignum» . Проверено 03 декабря 2018 г.
  9. ^ «Ядро Mathematica: проблемы проектирования и реализации» . Октябрь 2006 года . Проверено 17 марта 2013 г.
  10. ^ «Библиотека GNU Multiple Precision (GMP)» . Мэйплсофт . Проверено 17 марта 2013 г.
  11. ^ GCC использует библиотеку GNU MPFR , которая, в свою очередь, опирается на GMP. «Серия выпусков GCC 4.3: изменения, новые функции и исправления» . 02.11.2012 . Проверено 17 марта 2013 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: EC15C3247A8F17C62CF454B03462C643__1710529080
URL1:https://en.wikipedia.org/wiki/GNU_Multiple_Precision_Arithmetic_Library
Заголовок, (Title) документа по адресу, URL1:
GNU Multiple Precision Arithmetic Library - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)