Yo escribo una aplicación compatible con punto flotante (casi) IEEE 854 en TeX (que sólo tiene soporte para enteros de 32 bits). Este estándar solo especifica el resultado de +
, -
, *
, /
, comparación, resto y sqrt
: para esas operaciones, el resultado debe ser idéntico al redondeo del resultado exacto a un número representable (de acuerdo con el modo de redondeo).estándar para el seno de un gran número
Me parece recordar que IEEE especifica que las funciones trascendentales (sin
, exp
...) deben dar resultados fieles (por defecto en el asalto a modo cercano, que debe ser la salida a uno de los dos números representables que rodean el resultado exacto) Calcular el seno de números pequeños es bastante sencillo: cambiar por un múltiplo de 2 * pi para obtener un número en el rango [0,2 * pi], luego hacer un poco más de trabajo para reducir el rango a [0, pi/4] y usa una serie de Taylor.
Supongamos ahora que quiero para calcular el pecado (1e300). Para eso necesitaría encontrar 1e300 módulo 2 * pi. Eso requiere saber 300 (316?) Decimales de pi, porque con solo 16 decimales, el resultado no tendría ningún significado en absoluto (en particular, no sería fiel).
¿Existe una norma en lo que debe ser el resultado de sin(1e300)
y muy grandes números similares?
¿Qué hacen otras implementaciones de punto flotante?
+1 Agradable explicación de un problema interesante (no había pensado antes) – pavium