¿Cómo calcular correctamente las funciones trigonométricas redondeadas en grados?

¿Cómo podría definir funciones trigonométricas que tomen argumentos en grados en lugar de los radianes habituales y calculen correctamente los resultados redondeados para estos argumentos?

Multiplicando el argumento porM_PI/180.0 antes de pasarlo a la función correspondiente en radianes no funciona, porqueM_PI/180.0 no es π / 180. La Sección 5.5 del Manual de aritmética de coma flotante ofrece un método para calcular el producto correctamente redondeado del argumento por π / 180, pero algunos argumentos seguirán siendo tales que este producto esté cerca del punto medio entre dos flotadores representables consecutivos, y luego aplicar incluso una función correctamente redondeada en radianes puede producir el resultado final incorrecto.

Dos estrategias que pueden funcionar solas o en combinación son usar una mayor precisión y usarsinpi,cospi, tanpi funciones trigonométricas deCRlibm, que computan respectivamentesin(πx), cos(πx) ytan(πx).

Para la última estrategia, queda el problema de la división por 180, que no es exacto para muchos argumentos.

Con respecto a la estrategia de mayor precisión (multiplicando el argumento por una representación de precisión extendida de π / 180, luego aplicando la función de precisión extendida en radianes), puede haber un problema con los casos "exactos". El teorema que establece que los únicos resultados racionales desin, cos ytan para un argumento racional se obtienen en0 solo se aplica a las versiones en radianes. Obviamente, no se aplica a las versiones de grado, y si para alguna entrada de punto flotante x, sindeg (x) es exactamente el punto medio entre dos números de punto flotante representables consecutivos, entonces ninguna cantidad de precisión intermedia es suficiente para garantizar que el final El resultado se redondea correctamente.

Respuestas a la pregunta(4)

Su respuesta a la pregunta