2011-09-18 9 views
6

Necesito una biblioteca bignum para representar números enteros grandes. ¿Qué opciones tengo con el lenguaje de programación D? ¿Hay, por ejemplo, enlaces GMP?¿Qué bibliotecas bignum funcionan con D?

Actualización:

Estoy intentando utilizar el incorporado Bigint como se describe más adelante, pero parece que no está disponible con el GDC.

import std.bigint; 
import std.stdio; 

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

Cuando intento compilar este código con gdc main.d me han dicho que no puede encontrar bigint.d. ¿Gdc solo implementa parte de la biblioteca o estoy haciendo algo mal?

+0

¿Estás seguro de que usas una versión D2 de gdc? – Trass3r

+1

Si no compiló GDC usted mismo, entonces probablemente no esté usando la última versión de D. –

+0

Según tengo entendido, GDC tiene todo Phobos con él, pero yo nunca lo he usado, así que no lo se Su página actual está aquí: https://bitbucket.org/goshawk/gdc/wiki/Home –

Respuesta

5

Si lo que está buscando es un tipo de entero grande, entonces está BigInt en la biblioteca estándar. Por otro lado, si está buscando específicamente usar GMP, entonces todo lo que tiene que hacer es tener declaraciones extern(C) para los tipos y funciones apropiados en GMP que necesite, y puede llamarlos directamente desde D. Consulte this page para obtener más detalles sobre cómo usar el código C en D.

+1

por cierto, un enlace MPFR está incluido en dil: https://github.com/azizk/dil/blob/master/src /util/mpfr.d – Trass3r

4

Paul Anderson está trabajando en una abstracción BigFloat para la biblioteca estándar.

Cuestiones relacionadas