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.
GMPY Project goals and strategies
Multiprecision floating-point arithmetic on Apple systems
Guile Extensions and Examples – Summary
Genius Math Tool and the GEL Language
iRRAM – Exact Arithmetic in C++
MAGMA Computational Algebra System