2011-09-18 28 views
6

Büyük tam sayıları temsil eden bir bignum kitaplığına ihtiyacım var. D programlama dili ile hangi seçeneklerim var? Mesela GMP bağlamaları var mı?Hangi bignum kitaplıkları D ile çalışır?

Güncelleme: Ben aşağıda açıklandığı gibi dahili BigInt kullanmaya çalışıyorum ama buna GDC ile müsait değil görünür

. Ben gdc main.d bu kodu derlemeye çalıştığınızda

import std.bigint; 
import std.stdio; 

void main() 
{ 
    BigInt n = "123"; 
    writefln(n); 
} 

Ben bigint.d bulamıyorum söylendi. Gdc sadece kütüphanenin bir kısmını uygular mı yoksa yanlış bir şey mi yapıyorum?

+0

gdc'nin D2 sürümünü kullandığınızdan emin misiniz? – Trass3r

+1

GDC'yi kendiniz yapmadıysanız, muhtemelen D.'nin en son sürümünü kullanmıyorsunuzdur. –

+0

Anladığım kadarıyla GDC'nin tüm Phobos'ları var, ama ben hiç kullanmadım. Bilmiyorum. Şu anki anasayfası: https://bitbucket.org/goshawk/gdc/wiki/Home –

cevap

5

Aradığınız şey büyük tamsayılık bir sayıysa, standart kütüphanede BigInt var. Öte yandan, özellikle GMP'yi kullanmak istiyorsanız, yapmanız gereken tek şey, ihtiyacınız olan GMP'deki uygun tipler ve fonksiyonlar için extern(C) beyannameleridir ve bunları doğrudan D.'den arayabilirsiniz. Dışarı çıkın this page C kodunun nasıl kullanılacağı hakkında daha fazla bilgi için bkz.

+1

btw, bir MPFR bağlaması, dil: https://github.com/azizk/dil/blob/master/src adresinde yer almaktadır. /util/mpfr.d – Trass3r

4

Paul Anderson, standart kitaplık için bir BigFloat soyutlaması üzerinde çalışıyor.