Спустя 15 месяцев после выхода предыдущей версии, 8 мая 2011 года была опубликована версия 5.0.2 свободной открытой библиотеки для расчётов с произвольной точностью над целыми числами, рациональными дробями и числами с плавающей запятой GMP - The GNU Multiple Precision Arithmetic Library.
GMP является частью проекта GNU и распространяется на условиях GNU LGPL.
GMP находит применение в криптографических приложениях, научных исследованиях, алгебраических системах итп.
GMP написана с использованием языка ассемблера и C. При этом GMP считается одной из самых быстрых среди себе равных, как при вычислениях с операндами малой разрядности, так и при расчётах с большим количеством разрядов, благодаря оптимизированному коду и использованию асимптотически оптимальных алгоритмов.
Функции в GMP поделены на категории для удобства использования:
- mpz - высокоуровневые арифметические и логические функции для операций над знаковыми целыми числами (около 140).
- mpq - высокоуровневые арифметические функции для операций над рациональными дробями (около 35).
- mpf - высокоуровневые арифметические функции для операций над числами с плавающей точкой (около 65) для вычислений с точностью не ниже двойной.
- C++ классы для интерфейса к функциям категорий mpz, mpq, mpf.
- mpn - низкоуровневые функции для операции с беззнаковыми целыми числами с менее удобным вызовом, но низкими накладными расходами. Используются функциями вышеперечисленных категорий.
- mpfr - отдельно поддерживаемые и разрабатываемые высокоуровневые арифметические функции для операций над числами с плавающей точкой с высокоточным округлением.
В полном списке изменений, который можно найти в архиве с исходными кодами, всего около 30 изменений, большая часть из которых внесена автором и главным разработчиком GMP Торбйоном Гранлундом (Torbjörn Granlund), также известным соавторством во многих утилит командной строки в Linux (cp,split), авторством GNU superoptimizer'a, а также участием в разработке gcc.
Изменения главным образом касаются исправления ошибок, включения поддержки HPPA 2.0N, ОС Darwin и новых процессоров.
В вышедшем выпуске осталась проблема при компиляции с gcc 4.3.2 на 64-битных архитектурах. При этом проблем с компиляцией, например, с gcc 4.3.1 или gcc 4.3.3, не замечалось. Кстати тот факт, что именно gcc 4.3.2 был включен в поставку Debian Lenny, было и остаётся источником потока багрепортов в рассылку проекта.
GMP используется в библиотеке MPFR и, соответственно, в gcc.
На странице проекта можно ознакомиться с документацией, другой важной информацией для разработчиков и забавной программой для расчёта миллиона знаков числа пи с помощью GMP.
>>> Исходный код GMP
>>> Краткий список изменений