GMP: Sınırsız Aritmetik

GMP, işaretli tamsayılar, rasyonel sayılar ve kayan nokta sayıları üzerinde işlemler için keyfi hassasiyetli bir aritmetik kütüphanesidir.


Hassasiyet konusunda GMP'nin üzerinde çalıştığı makinedeki kullanılabilir bellek miktarı dışında pratik bir sınır yoktur. GMP zengin bir fonksiyon setine sahiptir ve tüm fonksiyonları düzenli bir arayüze sahiptir.

GMP, kriptografi uygulamaları ve araştırmalarında, internet güvenliği uygulamalarında, cebir sistemlerinde, hesaplamalı cebir araştırmalarında yaygın olarak kullanılmaktadır.

GMP, hem küçük işlenenler hem de büyük işlenenler için olabildiğince hızlı çalışacak şekilde tasarlanmıştır. Hız, temel aritmetik türü olarak tam sözcüklerin kullanılmasıyla, hızlı algoritmaların tercih edilmesiyle, çok sayıda MİB için en yaygın iç döngüleri sağlayan yüksek düzeyde optimize edilmiş assembly kodlarının yazılmasıyla ve hız üzerine özellikle eğilinmesiyle elde edilmiş.

İlk sürümü 1991'de çıkan GMP'nin yılda yaklaşık bir kez yeni sürümü çıkarılıyor ve düzenli olarak bakımı sürdürülüyor.

Altıncı sürümünden itibaren GMP, hem GNU LGPL v3 hem de GNU GPL v2 lisanslarıyla dağıtılmakta. Bu lisanslarla kütüphaneyi özgürce kullanabilir, paylaşabilir, geliştirebilir ve çalışmalarınızı sonuca aktarabilirsiniz.

GMP'nin hedeflediği ana platformlar GNU/Linux, Solaris, HP-UX, Mac OS X/Darwin, BSD, AIX gibi Unix türü sistemleri olsa da 32-bit ve 64-bit Windows sürümleri de desteklenir.

GMP'nin fonksiyonları birkaç kategoriye ayrılır:
  • Yüksek seviyeli işaretli tam sayı aritmetik fonksiyonları (mpz). Bu kategoride yaklaşık 150 aritmetik ve mantık fonksiyonu vardır.
  • Yüksek seviyeli rasyonel aritmetik fonksiyonları (mpq). Bu kategori yaklaşık 35 fonksiyondan oluşur, ancak tüm mpz fonksiyonları da pay ve paydaya ayrı ayrı uygulanarak kullanılabilir.
  • Yüksek seviyeli kayan nokta aritmetik fonksiyonları (mpf). C türü olan double, bir uygulama için yeterli hassasiyet sağlayamazsa kullanılacak GMP fonksiyon kategorisidir. Bu kategoride yaklaşık 70 fonksiyon vardır. Yeni bir proje geliştirmeye başlayacaklar, mpf yerine çok daha eksiksiz bir GMP genişletme kütüphanesi mpfr'ı kullanmayı göz önünde bulundurmalıdır.
  • Yukarıdakilerin tümü için C++ sınıfı tabanlı arayüz (elbette C fonksiyonları ve türleri de doğrudan C++'ta kullanılabilir).
  • Düşük seviyeli pozitif tamsayılar için kullanımı zor, çok düşük ek yüklü fonksiyonlar mpn kategorisinde bulunur. Bu fonksiyonlarda bellek yönetimi yapılmaz, çağrıldıklarında sonuçlar için yeterli bellek alanı olduğundan emin olunmalıdır. Fonksiyonlar kümesi her zaman düzenli değildir ve çağrı arabirimleri de yoktur. Bu fonksiyonlar, giriş argümanlarını en az anlamlı sözcüğün işaretçisinden ve bu bağımsız değişkende kaç uzuv (sözcük) olduğunu gösteren bir tam sayı boyuttan oluşan çiftler biçiminde kabul eder. Diğer kategorilerdeki fonksiyonlar neredeyse tüm hesaplamaları için mpn fonksiyonlarını çağırır. Bu fonksiyonlardan yaklaşık 60'ı dışarıdan kullanıma açıktır.

Yorumlar

Bu blogdaki popüler yayınlar

Mızıka Tabları Nasıl Okunur

Muhtar Kellesi

conio.h