in

Valor PI constante matemático en C

apple touch icon@2

Lo más parecido que hace C a «calcular π» de una manera que sea directamente visible para las aplicaciones es acos(-1) o similar. Esto casi siempre se hace con aproximaciones polinomiales / racionales para la función que se calcula (ya sea en C o mediante el microcódigo FPU).

Sin embargo, un tema interesante es que calcular las funciones trigonométricas (sin, cos, y tan) requiere la reducción de su argumento módulo 2π. Dado que 2π no es un racional diádico (y ni siquiera racional), no se puede representar en ningún tipo de punto flotante y, por lo tanto, el uso de cualquier aproximación del valor resultará en una acumulación de errores catastróficos para argumentos grandes (por ejemplo, si x es 1e12, y 2*M_PI difiere de 2π por ε, entonces fmod(x,2*M_PI) difiere del valor correcto de 2π hasta 1e12 * ε / π veces el valor correcto de x mod 2π. Es decir, no tiene ningún sentido.

Una implementación correcta de la biblioteca matemática estándar de C simplemente tiene una gigantesca representación de muy alta precisión de π codificada en su fuente para lidiar con el problema de la reducción correcta de argumentos (y usa algunos trucos sofisticados para que no sea tan gigantesco ). Así es como la mayoría / todas las versiones C del sin/cos/tan las funciones funcionan. Sin embargo, se sabe que ciertas implementaciones (como glibc) usan implementaciones de ensamblaje en algunos cpus (como x86) y no realizan la reducción correcta de argumentos, lo que genera resultados completamente sin sentido. (Por cierto, el ensamblaje incorrecto generalmente se ejecuta aproximadamente a la misma velocidad que el código C correcto para argumentos pequeños).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Bucles anidados de Python

gfg 200x200 min

Convertir cadena en flotante en Python