Разное

Библиотека gmp c: The GNU MP Bignum Library

Содержание

Установка и использование GMP в C++

Библиотека GMP является наиболее известной бесплатной библиотекой для длинной арифметики, написанной на языке C с использованием ассемблера. Эта библиотека разрабатывается с 1991 года. Из этой библиотеки появился другой бесплатный независимый проект с длинной арифметикой, в котором была сохранена совместимость с GMP — MIPR.
Mathematica, Maple и некоторые другие системы символьных вычислений используют GMP в качестве библиотеки для работы с длинной арифметикой.

Под линуксом проблем с установкой подобных библиотек обычно не возникает. Здесь срабатывает либо путь установки библиотеки из репозитария, либо более стандартный — скачивание исходных кодов и их компиляция при помощи “./configure && make && make install”.

Установка GMP для MINGW (Windows)

Если вы используете standalone версию MinGW(т.е. у вас есть папка C:\MinGW), то скорей всего вы её ставили при помощи утилиты mingw-get, которая находится в “C:\MinGW\bin”. При помощи mingw-get проблем с установкой GMP вообще не должно возникать, и ставится библиотека следующим образом :

mingw-get install mingw32-gmp
mingw-get install mingw32-gmp-dev

В случае отсутствия mingw-get, или если хочется версию GMP посвежее, то можно попробовать собрать библиотеку из исходных кодов используя систему msys :

# предположим что в папке C:\code\gmp502c\ будет находиться скомпилированная версия
./configure --prefix=/c/code/gmp502c/ --enable-cxx
make
make install

Флаг –enable-cxx позволит скомпилировать дополнительную библиотеку libgmpxx.a для С++ (заголовочный файл gmpxx.h)
После компиляции в папке C:\code\gmp502c\ появится три директории lib(библиотеки для линковки), include(заголовочные файлы), share(доки для man).
*Под MinGW мне удалось скомпилировать GMP из исходников, однако не получилось слинковать библиотеку с моим проектом. Я пробовал компилировать MIPR, но для нее не работает флаг –prefix при сборке и приходится собирать все что скомпилировалось в папке MIPR буквально “руками”. В конечном итоге я остановился на более простом варианте и решил использовать библиотеки, поставленные mingw-get.

C++ библиотеки GMP, их линковка и использование

GMP состоит из следующих файлов

Заголовочные:
 * gmp.h (для C)
 * gmpxx.h (для C++)
Библиотеки:
 * libgmp.a (библиотека для C)
 * libgmpxx.a (библиотека для C++)

При работе с GMP надо будет обязательно линковать файлы библиотек выше и указывать их в настройках проекта, иначе не избежать ошибок компиляции. Дополнительно, если вы используете версию из исходников, надо будет указать папку для поиска библиотек и заголовочных файлов(в примере это C:\code\gmp502\lib C:\code\gmp502\include)
Дальше можно проверить, что скомпилированная GMP работает для следующиего исходника :

#include <iostream>
#include <gmpxx.h>
using std::cout;
int main ()
{
    mpz_class a, b, c;
    a = 1234;
    b = "-567000000000000000000000008";
    c = a+b;
    cout << "sum is " << c << "\n";
    cout << "absolute value is " << abs(c) << "\n";
    return 0;
}

Если вы используете версию GMP из mingw-get :

g++ main.cpp -lgmpxx -lgmp

И если версию из исходных кодов :

g++ main.cpp -I/c/code/gmp502/include -L/c/code/gmp502/lib -lgmpxx -lgmp

На Mac OS X при использование gmp из brew :

g++-4.7 test_gmp.cpp -I/usr/local/include -L/usr/local/lib -lgmpxx -lgmp

Документация по GMP есть на сайте, конкретно по C++ обертке здесь.

Напоследок хотелось бы сказать, что пока я не сразу нашел простой путь установки GMP для MinGW при помощи mingw-get, я был немного удивлен тем, что не существует нормальных версий библиотеки GMP(или MIPR), которая сразу бы скомпилировалась и заработала.

Ну и касаемо такого вопроса почему же все-таки GMP, а не Python или другой язык, в котором уже встроена длинная арифметика, я думаю вы уже догадались, GMP для C++ на порядок быстрее Python и схожих систем.

GNU Multiple Precision Arithmetic Library

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 — отдельно поддерживаемые и разрабатываемые высокоуровневые арифметические функции для операций над числами с плавающей точкой с высокоточным округлением.

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

Сайт: GMP — The GNU Multiple Precision Arithmetic Library

Оставьте свой комментарий!

Добавить комментарий

< Предыдущая   Следующая >

GMP 5.0.2 — The GNU Multiple Precision Arithmetic Library — GNU’s Not Unix — Новости

Спустя 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

>>> Краткий список изменений

>>> Страница проекта GMP

Как установить GCC по частям с GMP, MPFR, MPC, ELF, без общих библиотек?

Легкий Путь

если вы типичный разработчик, вы можете установить простой способ, используя инструкции вhttp://gcc.gnu.org/wiki/InstallingGCC или диспетчер системных пакетов, например:

apt  install gcc  # for Debian, Ubuntu, etc.
yum  install gcc  # for RedHat, CentOS, etc.
brew install gcc  # for Mac OS X

Трудный Путь

GCC говорит, что ответ здесь «трудный путь», потому что он строит все по частям и не использует общие библиотеки.

инфраструктура GCC

получить GCC инфраструктура:

ftp://gcc.gnu.org/pub/gcc/infrastructure/

поместите загрузки во временный каталог (вы можете использовать любой каталог, который хотите).

/opt/downloads

создайте инфраструктуру во временном каталоге, который отличается от каталога загрузок или его подкаталогов:

/tmp/gcc

настройте инфраструктуру с помощью статических библиотек следующим образом:

./configure --disable-shared --enable-static --prefix=/tmp/gcc

флаг —disable-shared может стоить более пристального взгляда в зависимости от ваших потребностей. Я использую —disable-shared, потому что я я создаю только статический код, и я хочу убедиться, что я не создаю общий код. Мне нужно легко перемещать результирующий GCC вокруг моих дисков, поэтому я хочу весь статический код, и я не хочу никакого общего кода. Если вы предпочитаете общий код, опустите флаг —disable-shared.

версии

при выполнении любой из команд в этом ответе обязательно обновите команды, чтобы использовать текущий номер версии GCC, который соответствует вашим потребностям. Команды этого ответа для GCC 4.6.2.

обратите внимание, что в документации GCC говорится: «хотя любая достаточно новая версия необходимых инструментов обычно работает, требования к библиотеке, как правило, более строгие. Более новые версии могут работать в некоторых случаях,но безопаснее использовать точные версии, задокументированные.»

GMP

GMP-это арифметическая библиотека множественной точности GNU.

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
bunzip2 gmp-4.3.2.tar.bz2
tar xvf gmp-4.3.2.tar
cd gmp-4.3.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install

MPFR

MPFR-это библиотека округления с плавающей запятой с множественной точностью GNU. Он зависит от GMP.

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
bunzip2 mpfr-2.4.2.tar.bz2
tar xvf mpfr-2.4.2.tar
cd mpfr-2.4.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc
make && make check && make install

MPC

MPC-это библиотека с множественной точностью GNU. Это зависит от GMP и MPFR.

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
tar zxvf mpc-0.8.1.tar.gz
cd mpc-0.8.1
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc --with-mpfr=/tmp/gcc
make && make check && make install

эльф

ELF означает исполняемый и связываемый формат. Эта библиотека предоставляет архитектурно-независимый размер и поддержку endian.

wget http://www.mr511.de/software/libelf-0.8.13.tar.gz
tar zxvf libelf-0.8.13.tar.gz
cd libelf-0.8.13
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install

GCC

GCC-это коллекция компиляторов GNU. Это зависит от GMP, MPFR, MPC и ELF.

wget http://www.netgull.com/gcc/releases/gcc-4.6.2/gcc-4.6.2.tar.gz
tar zxvf gcc-4.6.2.tar.gz

построить gcc в царапине каталог
та же точка монтирования. (Создание его в /tmp вызовет перекрестные проблемы компиляции хоста)

mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch

команда configure и ее флаги должны быть все в одной командной строке (это сообщение показывает их на отдельных строках только из-за ширины веб-страницы).

Примечание: мы используем полный путь для настройки и не устанавливаем переменные среды пути библиотеки. Мы решили отключить Bootstrap и отключить общие библиотеки, потому что мы не хотим их (типичные пользователи могут и), и использовать потоки posix и флаги по умолчанию, потому что мы хотим их (типичные пользователи могут использовать другие потоки или пропустить флаги по умолчанию). YMMV и читайте о флагах здесь

/opt/downloads/gcc-4.6.2/configure
  --disable-shared
  --disable-bootstrap
  --disable-libstdcxx-pch
  --enable-languages=all
  --enable-libgomp
  --enable-lto
  --enable-threads=posix
  --enable-tls
  --with-gmp=/tmp/gcc
  --with-mpfr=/tmp/gcc
  --with-mpc=/tmp/gcc
  --with-libelf=/tmp/gcc
  --with-fpmath=sse
make && make install

эта страница отлично подходит для информации об установке GCC, как ее построить, различные флаги и многое другое:

http://www.acsu.buffalo.edu / ~charngda/cc_build.html

обновления

библиотеки ppl можно использовать для оптимизация памяти: см. bugseng.com/products/ppl/Download (Спасибо Павлу в комментариях)

ты можешь бежать ./ contrib / download_prerequisites из исходного каталога gcc. (Благодаря N7P на reddit)

Gmp

Спустя 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

>>> Краткий список изменений

>>> Страница проекта GMP

plibsys — кросс-платформенная системная библиотека на C — Open Source — Новости

Недавно ко мне обратились с вопросом, не хочу ли я написать новость об одной из разрабатываемых библиотек (plibsys). В принципе, я не против, поэтому эксклюзивно для LOR.

Что такое plibsys?

plibsys — это кросс-платформенная системная библиотека, написанная на чистом C. Основной упор был изначально сделан на портируемость и поддержку широкого спектра компиляторов. Для достижения этих целей у библиотеки отсутствуют (небольшим исключением является SCO OpenServer 5 ввиду отсутствия на ней потоков) какие-либо зависимости — используются только те вызовы, которые доступны в целевой ОС. Также никакого ассемблера и использования прочих недокументированных возможностей. Для сборки нужен только рабочий компилятор и CMake.

Изначально библиотека писалась для запуска потоков и работы с сокетами, но постепенно функционал расширялся по мере необходимости. На данный момент есть следующий функционал:

  • Платформо-независимые типы данных
  • Потоки и средства синхронизации: мьютексы, условные переменные, блокировки чтения-записи, спинлоки, атомарные операции
  • Межпроцессное взаимодействие: семафоры, разделяемая память, кольцевой буфер
  • Сокеты (UDP, TCP) с поддержкой IPv4 и IPv6
  • Хэш-функции: MD5, SHA-1, SHA-2, SHA-3, GOST (R 34.11-94)
  • Бинарные деревья: несбалансированное, красно-черное, АВЛ
  • Загрузка разделяемых библиотек
  • Работа с памятью: mmap, установка собственного аллокатора
  • Замер времени исполнения (по возможности — в высоком разрешении)
  • Базовая работа с файлами и директориями
  • Парсер файлов INI
  • Макросы для определения архитектуры ЦПУ, ОС и компилятора
  • Различные вспомогательные структуры данных типа связанного списка, хэш-таблицы, обработка строк

На все есть документация.

Поддерживаемые платформы и компиляторы

Абсолютно все модули покрыты Unit-тестами. Есть интеграция с CI (Travis, AppVeyor), где прогоняется большое число разнообразных конфигураций. Также для улучшения качества кода и снижения числа ошибок используется сервис статического анализа кода Coverity. Для оценки покрытия тестами используется Codecov.

На данный момент поддерживаются следующие платформы:

  • GNU/Linux
  • macOS
  • Windows, Cygwin, MSYS
  • FreeBSD, NetBSD, OpenBSD, DragonFlyBSD
  • Solaris
  • AIX
  • HP-UX
  • Tru64
  • OpenVMS
  • OS/2
  • IRIX
  • QNX Neutrino, BlackBerry 10
  • UnixWare 7
  • SCO OpenServer 5
  • Haiku
  • Syllable
  • BeOS

Также работоспособность библиотеки проверена на следующих компиляторах и архитектурах:

  • MSVC (x86, x64) 2003 и выше
  • MinGW (x86, x64)
  • Open Watcom (x86)
  • Borland (x86)
  • GCC (x86, x64, PPC32be, PPC64be/le, IA-64/32, IA-64, Alpha, HPPA2.0-32, MIPS32, AArch42, SPARCv9)
  • Clang (x86, x64, PPC32be)
  • Intel (x86, x64)
  • QCC (x86, AArch42)
  • Oracle Solaris Studio (x86, x64, SPARCv9)
  • MIPSpro (MIPS32)
  • XL C (PPC64le)
  • DEC C (Alpha)
  • PGI (x86, x64)
  • Cray (x64)

Особенности работы библиотеки, сборки и тестирования на разных платформах с разными компиляторами подробно рассмотрены в Wiki.

Что дальше?

Библиотека по-тихоньку продолжает развиваться, хотя, к сожалению, свободного времени не так много. Например, недавно была добавлена поддержка для систем Cray.

Планирую сделать родной пакет для Debian. В общем-то, он готов, надо только протестировать. В связи с этим, если кто-то сможет выступить в качестве поручителя (он же sponsor в терминологии Debian) для проверки и заливки пакета — буду рад.

Если у кого-то есть доступ к каким-то машинам и компиляторам, которых нету в списке, и есть возможность организовать удаленный доступ для портирования — буду рад. В данный момент было бы интересно проверить под HP-UX с компилятором HP C/aC++. Или на машинах уровня BlueGene с компилятором IBM XL. Или на AmigaOS.

Пожелания, комментарии (конструктивные и не очень) и поток сознания (в меру) по библиотеке приветствуются 🙂

>>> Подробности

Библиотека GNU MP Bignum

Компьютеры GMP обслуживаются одним человеком на добровольной основе. В
продолжающийся шторм аппаратных ошибок Intel с
Meltdown,
Призрак
Предзнаменование,
МДС,
а теперь последняя ошибка jCC и
МНЕ
бэкдор делает серверы GMP далеко не такими безопасными, как нам хотелось бы.
У нас нет ни времени, чтобы следить за ошибками, ни финансовых ресурсов, чтобы
приобретите безопасное (r) серверное оборудование AMD.

Система, которая запускает этот веб-сервер, а также почтовый сервер, список рассылки
сервер, брандмауэр и т. д. имеет Intel E5-1650 v2, на который влияет большинство
упомянутые выше ошибки / бэкдоры.Имейте это в виду при использовании
ресурсы здесь.

Пожалуйста, поймите, что мы серьезно относимся к безопасности, но эффективно
являются
DoS’ed by
небрежная / злонамеренная инженерия.

Что такое GMP?

GMP — это бесплатная библиотека для арифметики произвольной точности, работающая на
целые числа со знаком, рациональные числа и числа с плавающей запятой. Здесь нет
практический предел точности, кроме тех, которые подразумеваются доступными
память в машине, на которой работает GMP. GMP имеет богатый набор функций, а
функции имеют обычный интерфейс.

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

GMP тщательно разработан, чтобы быть максимально быстрым как для небольших операндов
и для огромных операндов. Скорость достигается за счет использования полных слов в качестве основного
арифметический тип, с использованием быстрых алгоритмов, с высоко оптимизированным кодом сборки
для наиболее распространенных внутренних циклов для многих процессоров, и за счет общего акцента на
скорость.

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

Начиная с версии 6, GMP распространяется по двойной лицензии,
GNU LGPL v3
и GNU GPL v2.
Эти лицензии делают библиотеку бесплатной для использования, обмена и улучшения, а также позволяют
передать результат. Лицензии GNU не только дают свободы, но и устанавливают твердую
ограничения на использование платных программ.

GMP является частью проекта GNU. Для получения дополнительной информации о проекте GNU,
посетите официальный веб-сайт GNU.

Основными целевыми платформами

GMP являются системы типа Unix, такие как GNU / Linux,
Solaris, HP-UX, Mac OS X / Darwin, BSD, AIX и др. Также известно, что он работает на
Windows как в 32-битном, так и в 64-битном режиме.

GMP предоставлен вам командой, указанной в
руководство.

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


Категории функций GMP

В GMP есть несколько категорий функций:

  1. Целочисленные арифметические функции высокого уровня со знаком ( mpz ). Их около 150
    арифметические и логические функции в этой категории.
  2. Функции рациональной арифметики высокого уровня ( mpq ). Эта категория состоит из
    около 35 функций, но можно использовать все функции mpz
    также, применяя их к числителю и знаменателю отдельно.
  3. Арифметические функции высокого уровня с плавающей запятой ( mpf ). Это GMP
    категория функции для использования, если тип C `double ‘не дает достаточно
    точность для приложения. Всего в этом
    категория. В новых проектах следует серьезно подумать об использовании гораздо большего
    полная библиотека расширений GMP mpfr
    вместо mpf.
  4. Интерфейс на основе классов C ++ для всего вышеперечисленного. (Функции и типы C
    конечно, можно использовать и прямо из C ++.)
  5. Низкоуровневые положительно-целые, трудные в использовании, с очень низкими накладными расходами
    найдено в категории mpn . Управление памятью не выполняется; звонящий
    должен обеспечить достаточно места для результатов. Набор
    функции не всегда регулярны, как и вызывающий интерфейс. Эти
    функции принимают входные аргументы в виде пар, состоящих из
    указатель на наименее значащее слово и целочисленный размер, показывающий, как
    в этом аргументе много конечностей (= слов).Функции в
    другие категории используют mpn почти для всех своих вычислений. Из этих
    публичных функций около 60.

Загрузите последнюю версию GMP

Чтобы попытаться проверить, что загруженный вами файл не был подделан
с помощью, вы можете проверить, соответствует ли подпись GnuPG содержимому файла.
Используй свой
Программное обеспечение GnuPG или
сервер ключей напрямую, чтобы получить ключ, который был
используется для создания подписи. Начиная с перепаковки gmp-5.1.0 как
gmp-5.1.0a.tar. * следующий ключ используется для подписи релизов GMP:


Идентификатор ключа: 0x28C67298
Тип ключа: 2560 бит RSA
Отпечаток: 343C 2FF0 FBEE 5EC2 EDBE F399 F359 9FF8 28C6 7298

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


Сообщение об ошибках в GMP

Сначала просмотрите
руководство о том, как сообщать об ошибках.В
правильный адрес для сообщений об ошибках — gmp-bugs на gmplib.org.

Большинство проблем с GMP в наши дни связано с проблемами не с GMP, а с
компилятор, используемый для компиляции исходников GMP. Это серьезная проблема для
проект GMP, поскольку неправильное вычисление — неправильное вычисление,
вызвано ли это ошибкой GMP или ошибкой компилятора. Мы боремся с этим, создавая GMP
testuite имеет большое покрытие, поэтому он должен улавливать все возможные
неправильная компиляция.


Списки рассылки GMP

Обратите внимание, что мы выполняем фильтрацию спама и вирусов для этих списков.Списки
были на 100% свободны от спама в течение последних лет.

Вы не можете подписаться на адрес AOL на какой-либо список рассылки GMP,
поскольку AOL блокирует наш почтовый сервер до тех пор, пока мы не зарегистрируем их как «массовую
mailer «, чего мы никогда не сделаем.

Мы блокируем всю почту из КНР, так как 99%
Спам, поступающий модераторам GMP, исходит из Китайской Народной Республики. Если ты
затронуты, но имеют законную причину для отправки почты в проект GMP, например, если
вы работаете в университете или корпорации, интересующейся GMP, пожалуйста, сообщите нам
знать; мы откроем для вас доступ.


Статус текущей версии

Текущая стабильная версия — 6.2.0, выпущенная 17 января 2020 года.

Проблемы с GMP 6.2.0:
  • MacOS Xcode 11 до 11.3 неправильно компилирует GMP, что приводит к сбоям и
    неправильный расчет.
Проблемы с GMP 6.1.2:
  • MacOS Xcode 11 до 11.3 неправильно компилирует GMP, что приводит к сбоям и
    неправильный расчет.
Проблемы с GMP 6.1.1:
  • Есть несколько проблем с mini-gmp.Пожалуйста, посмотрите специальные
    страница mini-gmp-status.
Проблемы с GMP 6.1.0:
  • Файл сборки, который используется для Intel Broadwell и Intel Skylake.
    (кроме покалеченных Pentiums и Celeron без BMI2) работать не будет
    правильно для Виндозе.
    Патч.
  • См. Также проблемы для последующих выпусков выше.
Проблемы с GMP 6.0.0:
  • [Проблем пока нет]
  • См. Также проблемы для последующих выпусков выше.
Проблемы с GMP 5.1.3:
  • Документация mpn_set_str неверна и
    неполные требования к распределению.
    Патч.
  • См. Также проблемы для последующих выпусков выше.
Проблемы с GMP 5.1.2:
  • Функции mpn_sbpi1_div_qr_sec и
    mpn_sbpi1_div_r_sec вычислять неверные результаты для некоторых
    операнды. При равномерно распределенных случайных операндах ошибка очень
    трудно запускать, и для предполагаемого использования этих функций операнды могут
    ожидается появление таких случайных операндов из этих функций ‘
    перспектива.Патч.
  • Внутренняя функция mpn_divrem_2 на Itanium блокирует два сохранения вызываемых объектов.
    регистры. Это может привести к неправильным вычислениям или сбоям в вызывающих абонентах.
    Патч.
  • См. Также проблемы для последующих выпусков выше.
Проблемы с GMP 5.1.1:
  • Только для Windows: 64-разрядная сборка для чипов AMD Bulldozer и Piledriver, или
    толстая 64-битная сборка, работающая на этих чипах, работать некорректно.
    Патч.
  • Функция mpz_powm_ui вычисляет мусор, если база
    аргумент более 15000 десятичных или аргумент мода не менее 7500 десятичных
    цифры.Никакие другие функции GMP powm не затронуты.
    Патч.
  • См. Также проблемы для последующих выпусков выше.
Проблемы с GMP 5.1.0:
  • Файл mini-gmp.c, который реализует подмножество mpn и mpz, не был
    правильно протестирован и содержал ряд ошибок. Пожалуйста, не используйте
    5.1.0 версия mini-gmp.c. Обратите внимание, что эти ошибки не влияют на GMP.
    сам.
  • Включенный Makefile.in верхнего уровня содержит созданный автоматически
    distcheck target, которая создает доступный для записи каталог.Эта цель не используется в процессе выпуска GMP, но это потенциальный
    проблема безопасности, затрагивающая пользователей, которые вызывают эту цель make. Эта
    проблема (и никакая другая) исправлена ​​в наборе gmp-5.1.0a.tar. *
    файлы.
  • См. Также проблемы для последующих выпусков выше.

Исправления для более старых версий GMP см.
Информация о более старых выпусках GMP.


Будущие выпуски

Пожалуйста, посетите страницу GMPng для получения информации о
над чем мы работаем.

.

Матрица в библиотеке GMP (на C)

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Загрузка…

.

C ++ — ошибка библиотеки GMP с оператором%

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Загрузка…

    .

    новейших вопросов по gmp — Stack overflow на русском

    Переполнение стека

    1. Около
    2. Продукты

    3. Для команд
    1. Переполнение стека
      Общественные вопросы и ответы

    2. Переполнение стека для команд
      Где разработчики и технологи делятся частными знаниями с коллегами

    3. Вакансии
      Программирование и связанные с ним технические возможности карьерного роста

    4. Талант
      Нанимайте технических специалистов и создавайте свой бренд работодателя

    5. Реклама
      Обратитесь к разработчикам и технологам со всего мира

    6. О компании

    .

Добавить комментарий

Ваш адрес email не будет опубликован.