Pregunta

Me acaba de comenzar a trabajar con la biblioteca de precisión arbitraria MPFR y bastante pronto nos encontraremos con un comportamiento muy extraño. El objetivo principal de usar que era para mejorar la precisión de TRIGS argumento lagre y esto funciona extremadamente bien en MPFR.

Pero entonces decidí ir a operaciones matemáticas sencillas y fue unbeleavable -. Incluso en ejemplos sencillos con respuestas estrictas redondeo existen errores y no depende de la precisión usado

Incluso en el ejemplo como 1.1 * 1 el resultado es 1,10000000000000008881784 ... Y este resultado determinado con una precisión poco loco 2000 (53 en doble normal)!

Tal vez es cuestión de mi sistema, pero incluso en MPFR línea existen problemas similares. Usted puede tratar de un ejemplo de ello en línea: http: //ex-cs.sist .ac.jp / ~ tkouya / try_mpfr.html

1 * 1.1 @ 64 bits = 1,10000000000000000002

pero en línea la versión de error se mueve aún más con el aumento de la precisión, pero en mi instalación -. No

Mi sistema: Ubuntu 9.10 + GMP + 5.0.0.1 MPFR 2.4.2

¿Fue útil?

Solución

Esta parece ser la respuesta canónica de punto flotante problemas de precisión . Incluye una explicación de por qué más bits no resuelve el problema.

Respuesta Viejo

Véase la pregunta 7 de la MPFR FAQ. De todos modos, siempre habrá algún error, ya que muchos números no son exactamente representable con mantisas binarios sin importar la cantidad de bits que utiliza. Ver esta respuesta a una pregunta SO relacionada para una buena explicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top