7612058254738945 x 9263591128439081 = 70514995317761165008628990709545
Angka tersebut jelas tidak dapat direpresentasikan dalam tipe data standard, int, long int, double, dan selainnya. GMP memakai tipe data mpz_t sebagai container-nya. Secara teori, tingkat kepresisian operasi tidak terbatas dan dibatasi oleh besar memory (RAM) komputer yang dipakai. Operasi angka besar seperti ini banyak dijumpai pada algoritma cryptography, yang sering menggunakan angkat biner dengan jumlat bit sampai 1024-bit bahkan lebih.
GMP di Windows
Salah satu kekurangan library GMP adalah tidak adanya solusi yang out-of-the-box untuk Windows. Untuk memakai GMP, harus melakukan porting Makefile terlebih dahulu sehingga dapat dicompile di Visual Studio, dan ini cukup memakan waktu.
Untungnya, sudah ada orang yang membuat fork dari repository GMP dan membuat versi sendiri yaitu: MPIR (Multi Precision Integer and Rational, http://www.mpir.org/). Berbeda dengan GMP, library ini sejak awal didesain agar support untuk platform Linux, Windows, MAC OS, dan Solaris.
Membuild Library MPIR di Visual Studio
Untuk mem-build library MPIR di Windows, dibutuhkan berikut:
- Visual Studio (bisa memakai Visual Studio 10 Express)
- Windows SDK 7.1
- GRMSDK_EN_DVD.iso untuk Windows x86 32-bit
- GRMSDKX_EN_DVD.iso untuk Windows x64 64-bit
- GRMSDKIAI_EN_DVD.iso untuk Intel Itanium Architecture 64-bit
Extract source code tersebut, lalu masuk ke folder "mpir-2.6.0\build.vc10". Buka "mpir.sln" menggunakan Visual Studio, lalu build project berikut: dll_mpir_gc, lib_mpir_gc, dan lib_mpir_cxx. Library hasil build akan muncul di "mpir-2.6.0\lib\Win32\Debug" atau "mpir-2.6.0\lib\Win32\Release" tergantung dibuild dengan target Debug atau Release.
Untuk menjalankan aplikasi GMP pada Windows menggunakan GMP, cukup masukkan path "mpir-2.6.0\lib\Win32\Debug" atau "mpir-2.6.0\lib\Win32\Release" pada Additional Library Directories, dan path "mpir-2.6.0\" pada Additional Dependencies.
Ambil contoh penggunaan GMP dari http://en.wikipedia.org/wiki/GNU_Multiple_Precision_Arithmetic_Library, untuk perkalian bilangan besar.
Berikut hasilnya:
Library GMP banyak dipakai untuk membuat algoritma cryptography, misalnya pada algoritma RSA, untuk melakukan kalkulasi ciphertext = plaintext ^ e mod m, cukup gunakan mpz_powm(ciphertext, plaintext, e, e). Selamat mencoba ;-) (Yayan)
Catatan:
Library GMP termasuk sudah lama dan kemungkinan akan out-dated digantikan dengan library baru seperti MPIR, libgcrypt (untuk cryptography), dan sebagainya.