Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jhonsc en 3 Febrero 2012, 20:32 pm



Título: Obtener más precisión que long double en C?¿?
Publicado por: 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


Título: Re: Obtener más precisión que long double en C?¿?
Publicado por: eleon en 3 Febrero 2012, 21:21 pm
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.


Título: Re: Obtener más precisión que long double en C?¿?
Publicado por: NeoB en 4 Febrero 2012, 11:26 am
Yo también estoy buscando algo así, haber si lo consigo y lo posteo.


Título: Re: Obtener más precisión que long double en C?¿?
Publicado por: Xandrete en 4 Febrero 2012, 13:48 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í (http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic) 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 >.<