¿Cómo calcula un ordenador el valor del pecado? Lógicamente, cuando pienso en ello, la única forma aparente es poner muchos valores de pecado en la memoria, y cuando un valor de pecado necesita ser "calculado", simplemente se sacan los datos de una dirección de memoria específica (por ejemplo, sin(x) sacaría los datos de la dirección de memoria que contiene el valor de sin(x)). ¿O hay una función que se puede utilizar para calcular el pecado de un valor? Realmente estoy tratando de preguntar cómo un ordenador calcula el pecado en un nivel básico. ¿Existe una manera de aproximar los valores del pecado usando una función diferente compuesta de más operaciones "básicas", y la ALU sería capaz de hacer múltiples operaciones "básicas" para aproximar el valor del pecado, o simplemente saca valores de la memoria?
Respuestas
¿Demasiados anuncios?Normalmente, las funciones sin(x) de alta resolución se implementarían con un algoritmo CORDIC (COrdiate Rotation DIgital Computer), que puede lograrse con un pequeño número de iteraciones utilizando sólo desplazamientos y sumas/restas y una pequeña tabla de búsqueda. El sitio web papel original La técnica informática CORDIC de Jack Volder es de 1959. También funciona muy bien cuando se implementa con hardware en una FPGA (y un algoritmo similar se implementaría en una FPU de hardware para aquellos micros que tienen una FPU).
Para una resolución más baja, por ejemplo para crear una onda sinusoidal sintetizada para un inversor o motor VFD (Variable Frequency Drive), una tabla de búsqueda (LUT) con o sin interpolación funciona bien. Sólo es necesario almacenar los valores de un cuadrante de la onda sinusoidal debido a la simetría.
Como señala @Temlib, los algoritmos utilizados dentro de las FPUs modernas utilizan la reducción de rango seguida de una evaluación utilizando algo como el Algoritmo Remez para limitar el error absoluto máximo. Puede encontrar más información en este Papel de Intel Verificación formal de la coma flotante funciones trigonométricas de punto flotante .
La mayoría de las bibliotecas de trigonometría informática se basan en aproximaciones polinómicas que ofrece el mejor equilibrio entre velocidad y precisión. Por ejemplo, una docena de operaciones de multiplicación y de suma/resta es suficiente para obtener una precisión total para el seno y el coseno.