La librería Gnu Multiple Precision (GMP)

La librería Gnu Multiple Precision (GMP) permite hacer cálculos de precisión arbitraria.

En el sitio de GMP viene un código de referencia que permite calcular pi hasta donde le alcance la memoria a la maquina.

Para construir la librería bajo mingw y Windows XP solo hay que seguir las instrucciones. Único detalle a tomar en cuenta es que /usr en mingw esta mapeado al directorio raíz de msys.

Posicionarse en el directorio raíz de la librería y seguir al secuencia del make

./configure
make
make check
make install

Ver el make trabajar es espeluznante, más de 10 minutos de pantallas can parámetros. Sin embargo hay puertos disponibles para .Net, aunque de la versión 4.1.

Para usar la librería podemos tomar como ejemplo el programa para calcular pi.

gcc -c gmp-chudnovsky.c -I/local/include
gcc -o gmp-chudnovsky.exe gmp-chudnovsky.o -L/local/lib -lgmp
gmp-chudnovsky.exe 50 1

Existe un puerto actualizado para Visual Studio 2005 disponible en la pagina Building GMP and MPFR with Microsoft Visual Studio 2005 and YASM. Hay que seguir las instrucciones del ReadMe con cuidado y al final aunque se generan warnings se construyen bien las librerías. Un paso que no esta claro del readme es que hacer con el archivo mparam_h.in. Yo simplemente lo renombre mparam.h.

El archivo gmp-chudnovsky.c del sitio de gmp necesita modificarse para usarlo en Visual Studio. Es necesario agregar las lineas de código:

#ifdef _MSC_VER
#define inline __inline
#endif

En la configuración del proyecto hay que agregar el directorio donde esta gmp.h y donde esta la librería que se quiera usar ademas de agregar la referencia a gmp.lib

Referencias

“Many Digits” Friendly Competition , Programas usados por el equipo de MPFR.

The MPFR Library

GMPY Project goals and strategies

Advanced Computation Group

Multiprecision floating-point arithmetic on Apple systems

Guile Extensions and Examples – Summary

AlgLibNet

Genius Math Tool and the GEL Language

Giac/Xcas

Computer algebra system

iRRAM – Exact Arithmetic in C++

MAGMA Computational Algebra System

SAGE is Open Source Mathematics Software

Wcalc

Numbers, constants, and computation