¿Cómo calcula una computadora un valor de pecado? Lógicamente, cuando lo pienso, la única forma aparente es poner muchos valores sin en la memoria, y cuando un valor sin se debe "calcular", simplemente extraería datos de una dirección de memoria específica (por ejemplo, sin (x) extraer datos de la dirección de memoria que contiene el valor de sin (x)) Esa parece ser la única forma posible de hacerlo. ¿O hay una función que pueda usarse para calcular el pecado de un valor? Realmente estoy tratando de preguntar cómo una computadora calcula el pecado en un nivel base. ¿Hay alguna manera de aproximar los valores sin usando una función diferente compuesta de más operaciones "básicas", y la ALU podría realizar múltiples operaciones "básicas" para aproximar el valor sin, o simplemente está extrayendo valores de la memoria?
fuente
<placeholder>
, google "<placeholder>
algoritmo de cálculo". Funciona mejor que preguntar sobre SE en la mayoría de los casos ...Respuestas:
Por lo general, las funciones sin (x) de alta resolución se implementarían con un algoritmo CORDIC (Computadora digital de rotación de coordenadas), que se puede lograr con un pequeño número de iteraciones utilizando solo cambios y sumas / restas y una pequeña tabla de búsqueda. El documento original The CORDIC Computing Technique de Jack Volder es de 1959. También funciona 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. Solo es necesario almacenar los valores para un cuadrante de la onda sinusoidal debido a la simetría.
Como señala @Temlib, los algoritmos utilizados dentro de las FPU modernas usan la reducción de rango seguida de una evaluación que usa algo como el algoritmo Remez para limitar el error absoluto máximo. Se puede encontrar más en este documento de Intel Verificación formal de funciones trigonométricas de coma flotante .
fuente
La mayoría de las bibliotecas de trigonometría se basan en aproximaciones polinómicas , lo que proporciona el mejor equilibrio entre velocidad y precisión. Por ejemplo, una docena de operaciones de multiplicación y suma / resta son suficientes para proporcionar una precisión de precisión única completa para seno y coseno.
fuente