Obtener más precisión que long double en C?¿?

Iniciado por jhonsc, 3 Febrero 2012, 20:32 PM

0 Miembros y 1 Visitante están viendo este tema.

jhonsc

Buenas, ¿alguien me dice si se puede obtener más precisión que la de long double en C? Lo pregunto por que estoy haciendo un programa que me calcule pi (sin un número de cifras definido, hasta que lo cierre) y ¡long double se queda corto para pi!  :xD
"Vive rápido, muere joven y deja un bonito cadáver"
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."
"Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad."

eleon

#1
No que yo sepa, y aunque exista no será lo suficientemente grande como para almacenar "infinitos dígitos" (hasta que cierres el programa) como tú planteas. La forma más lógica de hacerlo es calcular X dígitos, por ejemplo 10, y guardarlos en un fichero, memoria dinámica u otro medio, calcular los siguientes 10 dígitos y volver a guardarlos y asi sucesivamente, sino te va a ser imposible.

Saludos.

NeoB

#2
Yo también estoy buscando algo así, haber si lo consigo y lo posteo.

Xandrete

#3
Cita de: jhonsc en  3 Febrero 2012, 20:32 PM
Buenas, ¿alguien me dice si se puede obtener más precisión que la de long double en C? Lo pregunto por que estoy haciendo un programa que me calcule pi (sin un número de cifras definido, hasta que lo cierre) y ¡long double se queda corto para pi!  :xD

Mmmm... diría que lo que buscas es aritmética bignum, donde se utilizan arrays en los que cada posición es un dígito.

Mira, aquí en la wiki (en inglés, porque la española da penita en los artículos de informática) lo explican y dan algunos links en las referencias para seguir investigando sobre el tema. Lenguajes como Java incorporan de forma estándar bibliotecas para realizar operaciones bignum, pero en C y C++ habría que  incorporar bibliotecas de terceros (como GMP u OpenSSL) o implementar uno mismo funciones para operar con precisión arbitraria.

¡Saludos!

P.S. Por cierto, podrías inventarte una constante y calcular sus dígitos, xD (bastaría con inventarse una serie convergente  ;D), porque no creo que a estas alturas vayas a batir ningún récord calculando dígitos de Pi >.<