ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° 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 Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ:
- Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ (
mpz
). ΠΡ ΠΎΠΊΠΎΠ»ΠΎ 150
Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΡΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ. - Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ (
mpq
). ΠΡΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·
ΠΎΠΊΠΎΠ»ΠΎ 35 ΡΡΠ½ΠΊΡΠΈΠΉ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈmpz
ΡΠ°ΠΊΠΆΠ΅, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΠΈΡ ΠΊ ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ ΠΈ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. - ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ (
mpf
). ΠΡΠΎ GMP
ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΠΈΠΏ C `double ‘Π½Π΅ Π΄Π°Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ
ΡΠΎΡΠ½ΠΎΡΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ΅Π³ΠΎ Π² ΡΡΠΎΠΌ
ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ. Π Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ
ΠΏΠΎΠ»Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ GMP mpfr
Π²ΠΌΠ΅ΡΡΠΎ mpf. - ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠ»Π°ΡΡΠΎΠ² C ++ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ. (Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠΈΠΏΡ C
ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΠΏΡΡΠΌΠΎ ΠΈΠ· C ++.) - ΠΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ-ΡΠ΅Π»ΡΠ΅, ΡΡΡΠ΄Π½ΡΠ΅ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ ΠΎΡΠ΅Π½Ρ Π½ΠΈΠ·ΠΊΠΈΠΌΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠΌΠΈ ΡΠ°ΡΡ
ΠΎΠ΄Π°ΠΌΠΈ
Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ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)
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
- ΠΠΊΠΎΠ»ΠΎ
ΠΡΠΎΠ΄ΡΠΊΡΡ
- ΠΠ»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
ΠΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈ Π΄Π΅Π»ΡΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ°Π’Π°Π»Π°Π½Ρ
ΠΠ°Π½ΠΈΠΌΠ°ΠΉΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ Π±ΡΠ΅Π½Π΄ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»ΡΠ Π΅ΠΊΠ»Π°ΠΌΠ°
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ ΡΠΎ Π²ΡΠ΅Π³ΠΎ ΠΌΠΈΡΠ°- Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
ΠΠ°Π³ΡΡΠ·ΠΊΠ°β¦
.
C ++ — ΠΎΡΠΈΠ±ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ GMP Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ%
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
- ΠΠΊΠΎΠ»ΠΎ
ΠΡΠΎΠ΄ΡΠΊΡΡ
- ΠΠ»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
ΠΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈ Π΄Π΅Π»ΡΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ°Π’Π°Π»Π°Π½Ρ
ΠΠ°Π½ΠΈΠΌΠ°ΠΉΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ Π±ΡΠ΅Π½Π΄ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»ΡΠ Π΅ΠΊΠ»Π°ΠΌΠ°
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ ΡΠΎ Π²ΡΠ΅Π³ΠΎ ΠΌΠΈΡΠ°- Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
ΠΠ°Π³ΡΡΠ·ΠΊΠ°β¦
Π½ΠΎΠ²Π΅ΠΉΡΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΏΠΎ gmp — Stack overflow Π½Π° ΡΡΡΡΠΊΠΎΠΌ
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
- ΠΠΊΠΎΠ»ΠΎ
ΠΡΠΎΠ΄ΡΠΊΡΡ
- ΠΠ»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
ΠΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈ Π΄Π΅Π»ΡΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ°Π’Π°Π»Π°Π½Ρ
ΠΠ°Π½ΠΈΠΌΠ°ΠΉΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ Π±ΡΠ΅Π½Π΄ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»ΡΠ Π΅ΠΊΠ»Π°ΠΌΠ°
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ ΡΠΎ Π²ΡΠ΅Π³ΠΎ ΠΌΠΈΡΠ°- Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
.