CORDIC (por CO ordenada R flotación DI gital C omputer), también conocido como el algoritmo de Volder , o: Digit-por dígitos método Circular CORDIC (Jack E. Volder), [1] [2] Linear CORDIC , hiperbólica CORDIC (John Stephen Walther), [3] [4] y CORDIC hiperbólico generalizado ( GH CORDIC ) (Yuanyong Luo et al.), [5] [6] es un algoritmo simple y eficiente para calcular funciones trigonométricas , funciones hiperbólicas, raíces cuadradas , multiplicaciones , divisiones y exponenciales y logaritmos con base arbitraria, que normalmente convergen con un dígito (o bit) por iteración. Por lo tanto, CORDIC también es un ejemplo de algoritmos dígito a dígito . CORDIC y los métodos estrechamente relacionados conocidos como pseudo-multiplicación y pseudo-división o combinación de factores se usan comúnmente cuando no hay un multiplicador de hardware disponible (por ejemplo, en microcontroladores simples y FPGA ), ya que las únicas operaciones que requiere son sumas , restas , desplazamiento de bits y tablas de búsqueda . Como tales, todos pertenecen a la clase de algoritmos de cambio y adición . En ciencias de la computación, CORDIC se usa a menudo para implementar aritmética de punto flotante cuando la plataforma de destino carece de hardware multiplicar por razones de costo o espacio.
Historia
Henry Briggs publicó técnicas matemáticas similares ya en 1624 [7] [8] y Robert Flower en 1771, [9] pero CORDIC está mejor optimizado para CPU de estado finito de baja complejidad.
CORDIC fue concebido en 1956 [10] [11] por Jack E. Volder en el departamento de aeroelectrónica de Convair por necesidad de reemplazar el resolver analógico en la computadora de navegación del bombardero B-58 por un dispositivo digital en tiempo real más preciso y eficiente. solución. [11] Por lo tanto, a veces se hace referencia a CORDIC como un resolutor digital . [12] [13]
En su investigación, Volder se inspiró en una fórmula de la edición de 1946 del Manual de Química y Física del CRC : [11]
con , .
Su investigación dio lugar a un informe técnico interno que proponía el algoritmo CORDIC para resolver funciones de seno y coseno y una computadora prototípica implementándolo. [10] [11] El informe también discutió la posibilidad de calcular la rotación de coordenadas hiperbólicas , logaritmos y funciones exponenciales con algoritmos CORDIC modificados. [10] [11] La utilización de CORDIC para multiplicar y dividir también se concibió en este momento. [11] Basado en el principio CORDIC, Dan H. Daggett, un colega de Volder en Convair, desarrolló algoritmos de conversión entre binario y decimal codificado en binario (BCD). [11] [14]
En 1958, Convair finalmente comenzó a construir un sistema de demostración para resolver problemas de reparación de radar llamado CORDIC I , completado en 1960 sin Volder, que ya había dejado la empresa. [1] [11] Los modelos CORDIC II más universales A (estacionario) y B (aerotransportado) fueron construidos y probados por Daggett y Harry Schuss en 1962. [11] [15]
El algoritmo CORDIC de Volder se describió por primera vez en público en 1959, [1] [2] [11] [13] [16], lo que provocó que empresas como Martin-Orlando , Computer Control , Litton , Kearfott , Lear lo incorporaran a las computadoras de navegación. -Siegler , Sperry , Raytheon y Collins Radio . [11]
Volder se asoció con Malcolm McMillan para construir Athena , una calculadora de escritorio de punto fijo que utiliza su algoritmo binario CORDIC. [17] El diseño se presentó a Hewlett-Packard en junio de 1965, pero no fue aceptado. [17] Aún así, McMillan introdujo a David S. Cochran (HP) en el algoritmo de Volder y cuando Cochran más tarde conoció a Volder, lo refirió a un enfoque similar que John E. Meggitt (IBM [18] ) había propuesto como pseudo-multiplicación y pseudo-división. en 1961. [18] [19] El método de Meggitt también sugería el uso de la base 10 [18] en lugar de la base 2 , como lo ha utilizado el CORDIC de Volder hasta ahora. Estos esfuerzos llevaron a la implementación lógica ROMable de un prototipo de máquina CORDIC decimal dentro de Hewlett-Packard en 1966, [20] [19] construido y derivado conceptualmente de la máquina verde prototípica de Thomas E. Osborne , una máquina flotante de cuatro funciones calculadora de escritorio de puntos que había completado en lógica DTL [17] en diciembre de 1964. [21] Este proyecto resultó en la demostración pública de la primera calculadora de escritorio de Hewlett-Packard con funciones científicas, la hp 9100A en marzo de 1968, y la producción en serie comenzó más tarde ese año. [17] [21] [22] [23]
Cuando Wang Laboratories descubrió que la hp 9100A usaba un enfoque similar al método de combinación de factores en sus primeras calculadoras de escritorio LOCI-1 [24] (septiembre de 1964) y LOCI-2 (enero de 1965) [25] [26] Logarithmic Computing Instrument , [27] acusaron sin éxito a Hewlett-Packard de infracción de una de las patentes de An Wang en 1968. [19] [28] [29] [30]
John Stephen Walther en Hewlett-Packard generaliza el algoritmo en el CORDIC Unificado algoritmo en 1971, lo que le permite calcular funciones hiperbólicas , exponenciales naturales , los logaritmos naturales , multiplicaciones , divisiones y raíces cuadradas . [31] [3] [4] [32] Las subrutinas CORDIC para funciones trigonométricas e hiperbólicas podrían compartir la mayor parte de su código. [28] Este desarrollo dio como resultado la primera calculadora de mano científica , la HP-35 en 1972. [28] [33] [34] [35] [36] [37] Basado en CORDIC hiperbólico, Yuanyong Luo et al. propuso además un CORDIC hiperbólico generalizado (GH CORDIC) para calcular directamente logaritmos y exponenciales con una base fija arbitraria en 2019. [5] [6] [38] [39] [40] En teoría, el CORDIC hiperbólico es un caso especial de GH CORDIC . [5]
Originalmente, CORDIC se implementó solo utilizando el sistema numérico binario y, a pesar de que Meggitt sugirió el uso del sistema decimal para su enfoque de pseudo-multiplicación, el CORDIC decimal siguió siendo casi desconocido durante varios años más, por lo que Hermann Schmid y Anthony Bogacki todavía sugirieron como novedad en 1973 [16] [13] [41] [42] [43] y sólo más tarde se descubrió que Hewlett-Packard ya lo había implementado en 1966. [11] [13] [20] [28]
CORDIC decimal se volvió ampliamente utilizado en calculadoras de bolsillo , [13] la mayoría de las cuales operan en decimal codificado en binario (BCD) en lugar de binario. Este cambio en el formato de entrada y salida no alteró los algoritmos de cálculo centrales de CORDIC. CORDIC es especialmente adecuado para calculadoras de mano, en las que el bajo costo, y por lo tanto el bajo número de puertas de chip, es mucho más importante que la velocidad.
CORDIC se ha implementado en el STM32G4 basado en ARM , Intel 8087 , [43] [44] [45] [46] [47] 80287 , [47] [48] 80387 [47] [48] hasta el 80486 [43 ] serie de coprocesadores así como en el 68881 [43] [44] y 68882 de Motorola para algunos tipos de instrucciones de punto flotante, principalmente como una forma de reducir el número de puertas (y la complejidad) del subsistema FPU .
Aplicaciones
CORDIC utiliza operaciones simples de cambio y suma para varias tareas informáticas, como el cálculo de funciones trigonométricas, hiperbólicas y logarítmicas, multiplicaciones reales y complejas, división, cálculo de raíz cuadrada, solución de sistemas lineales, estimación de valores propios , descomposición de valores singulares , factorización QR y muchos otros. Como consecuencia, CORDIC se ha utilizado para aplicaciones en diversas áreas como procesamiento de señales e imágenes , sistemas de comunicación , robótica y gráficos 3D además de la computación científica y técnica general. [49] [50]
Hardware
El algoritmo se utiliza en el sistema de navegación del programa Apollo 's Lunar Roving Vehicle para calcular cojinete y alcance, o la distancia desde el módulo Lunar . [51] : 14 [52] : 17 CORDIC se utilizó para implementar el coprocesador matemático Intel 8087 en 1980, evitando la necesidad de implementar la multiplicación de hardware. [53]
CORDIC es generalmente más rápido que otros enfoques cuando no se dispone de un multiplicador de hardware (por ejemplo, un microcontrolador), o cuando se debe minimizar el número de puertas necesarias para implementar las funciones que admite (por ejemplo, en una FPGA o ASIC ). De hecho, CORDIC es una IP estándar en aplicaciones de desarrollo FPGA como Vivado para Xilinx, mientras que una implementación en serie de potencia no se debe a la especificidad de dicha IP, es decir, CORDIC puede calcular muchas funciones diferentes (propósito general) mientras que un El multiplicador de hardware configurado para ejecutar implementaciones de series de energía solo puede calcular la función para la que fue diseñado.
Por otro lado, cuando se dispone de un multiplicador de hardware ( por ejemplo , en un microprocesador DSP ), los métodos de búsqueda de tablas y las series de potencia son generalmente más rápidos que CORDIC. En los últimos años, el algoritmo CORDIC se ha utilizado ampliamente para diversas aplicaciones biomédicas, especialmente en implementaciones de FPGA [ cita requerida ] .
La serie STM32G4 y ciertas series de MCU STM32H7 implementan un módulo CORDIC para acelerar los cálculos en varias aplicaciones de señales mixtas, como gráficos para interfaz hombre-máquina y control de motores orientado al campo . Si bien no es tan rápido como una aproximación de series de potencia, CORDIC es de hecho más rápido que interpolar implementaciones basadas en tablas, como las proporcionadas por las bibliotecas estándar ARM CMSIS y C. [54] Aunque los resultados pueden ser un poco menos precisos, ya que los módulos CORDIC proporcionados solo logran 20 bits de precisión en el resultado. Por ejemplo, la mayor parte de la diferencia de rendimiento en comparación con la implementación ARM se debe a la sobrecarga del algoritmo de interpolación, que logra una precisión de punto flotante total (24 bits) y probablemente puede lograr un error relativo con esa precisión. [55] Otro beneficio es que el módulo CORDIC es un coprocesador y se puede ejecutar en paralelo con otras tareas de la CPU.
El problema con el uso de series de potencia es que, si bien proporcionan un pequeño error absoluto, no muestran un error relativo de buen comportamiento. [56]
Software
Muchos sistemas más antiguos con CPU de solo enteros han implementado CORDIC en diversos grados como parte de sus bibliotecas de punto flotante IEEE . Como la mayoría de las CPU modernas de uso general tienen registros de punto flotante con operaciones comunes como sumar, restar, multiplicar, dividir, seno, coseno, raíz cuadrada, log 10 , log natural, la necesidad de implementar CORDIC en ellos con software es casi nula. -existente. Solo los microcontroladores o las aplicaciones de software especiales de seguridad y con limitaciones de tiempo deberían considerar el uso de CORDIC.
Modos de operacion
Modo de rotación
CORDIC se puede utilizar para calcular varias funciones diferentes. Esta explicación muestra cómo usar CORDIC en el modo de rotación para calcular el seno y el coseno de un ángulo, asumiendo que el ángulo deseado se da en radianes y se representa en un formato de punto fijo. Para determinar el seno o coseno de un ángulo, La y o x de coordenadas de un punto en el círculo de la unidad que corresponde al ángulo deseado debe ser encontrado. Usando CORDIC, uno comenzaría con el vector:
En la primera iteración, este vector se gira 45 ° en sentido antihorario para obtener el vector . Las iteraciones sucesivas rotan el vector en una u otra dirección mediante pasos de reducción de tamaño, hasta que se alcanza el ángulo deseado. Paso el tamaño es por .
Más formalmente, cada iteración calcula una rotación, que se realiza multiplicando el vector con la matriz de rotación :
La matriz de rotación está dada por
Usando las siguientes dos identidades trigonométricas :
la matriz de rotación se convierte en
La expresión del vector rotado entonces se convierte en
dónde y son los componentes de . Restringir los ángulos tal que , la multiplicación con la tangente se puede reemplazar por una división por una potencia de dos, que se realiza de manera eficiente en hardware de computadora digital usando un desplazamiento de bits . La expresión entonces se convierte en
dónde
y se utiliza para determinar la dirección de la rotación: si el ángulo es positivo, entonces es +1, de lo contrario es -1.
se puede ignorar en el proceso iterativo y luego aplicar con un factor de escala
que se calcula de antemano y se almacena en una tabla o como una única constante, si el número de iteraciones es fijo. Esta corrección también se podría hacer de antemano, escalandoy por lo tanto ahorrando una multiplicación. Además, cabe señalar que [43]
para permitir una mayor reducción de la complejidad del algoritmo. Algunas aplicaciones pueden evitar corregir en conjunto, resultando en una ganancia de procesamiento : [57]
Después de un número suficiente de iteraciones, el ángulo del vector estará cerca del ángulo deseado. . Para la mayoría de los propósitos ordinarios, 40 iteraciones ( n = 40) son suficientes para obtener el resultado correcto hasta el décimo lugar decimal.
La única tarea que queda es determinar si la rotación debe ser en sentido horario o antihorario en cada iteración (eligiendo el valor de ). Esto se hace realizando un seguimiento de cuánto se giró el ángulo en cada iteración y restando eso del ángulo deseado; luego para acercarse al ángulo deseado, Si es positiva, la rotación es en el sentido de las agujas del reloj, de lo contrario es negativa y la rotación es en sentido antihorario:
Los valores de también debe calcularse previamente y almacenarse. Pero para ángulos pequeños, en representación de punto fijo, reduciendo el tamaño de la mesa.
Como se puede ver en la ilustración anterior, el seno del ángulo es la coordenada y del vector finalmientras que la coordenada x es el valor del coseno.
Modo de vectorización
El algoritmo de modo de rotación descrito anteriormente puede rotar cualquier vector (no solo un vector unitario alineado a lo largo del eje x ) en un ángulo entre -90 ° y + 90 °. Las decisiones sobre la dirección de la rotación dependen de ser positivo o negativo.
El modo de operación de vectorización requiere una ligera modificación del algoritmo. Comienza con un vector cuya coordenada x es positiva y la coordenada y es arbitraria. Las rotaciones sucesivas tienen el objetivo de rotar el vector hacia el eje x (y por lo tanto reducir la coordenada y a cero). En cada paso, el valor de y determina la dirección de la rotación. El valor final decontiene el ángulo total de rotación. El coste final de x será la magnitud del vector original escalado por K . Entonces, un uso obvio del modo de vectorización es la transformación de coordenadas rectangulares a polares.
Implementación
Ejemplo de software
La siguiente es una implementación de MATLAB / GNU Octave de CORDIC que no depende de ninguna función trascendental excepto en el cálculo previo de tablas. Si el número de iteraciones n está predeterminado, entonces la segunda tabla puede reemplazarse por una única constante. Con la aritmética de doble precisión estándar de MATLAB y la impresión de "formato largo", los resultados aumentan en precisión para n hasta aproximadamente 48.
función v = cordic ( beta, n ) % Esta función calcula v = [cos (beta), sin (beta)] (beta en radianes)% usando n iteraciones. El aumento de n aumentará la precisión.si beta < - pi / 2 || beta > pi / 2 si beta < 0 v = cordico ( beta + pi , n ); demás v = cordico ( beta - pi , n ); final v = - v ; % voltea el signo para el segundo o tercer cuadrante regresofinal% Inicialización de tablas de constantes utilizadas por CORDIC% necesita una tabla de arctangents de potencias negativas de dos, en radianes:% ángulos = atan (2. ^ - (0:27));ángulos = [ ... 0,78539816339745 0,46364760900081 0,24497866312686 0,12435499454676 ... 0.06241880999596 0.03123983343027 0.01562372862048 0.00781234106010 ... 0.00390623013197 0.00195312251648 0.00097656218956 0.00048828121119 ... 0.00024414062015 0.00012207031189 0.00006103515617 0.00003051757812 ... 0,00001525878906 0,00000762939453 0,00000381469727 0,00000190734863 ... 0,00000095367432 0,00000047683716 0,00000023841858 0,00000011920929 ... 0,00000005960464 0,00000002980232 0,00000001490116 0,00000000745058 ]; % y una tabla de productos de longitudes recíprocas de vectores [1, 2 ^ -2j]:% Kvalues = cumprod (1./abs (1 + 1j * 2. ^ (- (0:23))))Kvalues = [ ... 0,70710678118655 0,63245553203368 0,61357199107790 0,60883391251775 ... 0.60764825625617 0.60735177014130 0.60727764409353 0.60725911229889 ... 0.60725447933256 0.60725332108988 0.60725303152913 0.60725295913894 ... 0.60725294104140 0.60725293651701 0.60725293538591 0.60725293510314 ... 0.60725293503245 0.60725293501477 0.60725293501035 0.60725293500925 ... 0.60725293500897 0.60725293500890 0.60725293500889 0.60725293500888 ]; Kn = Kvalues ( min ( n , longitud ( Kvalues ))); % Inicializar variables de bucle:v = [ 1 ; 0 ]; % comienza con coseno de 2 vectores y seno de cero poweroftwo = 1 ; ángulo = ángulos ( 1 ); % Iteracionespara j = 0 : n - 1 ; si beta < 0 sigma = - 1 ; demás sigma = 1 ; final factor = sigma * poweroftwo ; % Tenga en cuenta que la multiplicación de matrices se puede hacer usando escalas por potencias de dos y restas de suma R = [ 1 , - factor ; factor , 1 ]; v = R * v ; % Multiplicar matriz 2 por 2 beta = beta - sigma * ángulo ; % actualiza el ángulo restante poweroftwo = poweroftwo / 2 ; % actualiza el ángulo de la tabla, o eventualmente dividiéndolo por dos si j + 2 > longitud ( ángulos ) ángulo = ángulo / 2 ; demás ángulo = ángulos ( j + 2 ); finalfinal% Ajustar la longitud del vector de salida para que sea [cos (beta), sin (beta)]:v = v * Kn ; regresofunción final
La multiplicación de matrices de dos por dos se puede realizar mediante un par de cambios y sumas simples.
x = v [ 0 ] - sigma * ( v [ 1 ] * 2 ^ ( - j )); y = sigma * ( v [ 0 ] * 2 ^ ( - j )) + v [ 1 ]; v = [ x ; y ];
En Java, la clase Math tiene un scalb(double x,int scale)
método para realizar dicho cambio, [58] C tiene la función ldexp , [59] y la clase de procesadores x86 tiene la fscale
operación de punto flotante. [60]
Ejemplo de hardware
El número de puertas lógicas para la implementación de un CORDIC es aproximadamente comparable al número requerido para un multiplicador, ya que ambos requieren combinaciones de cambios y adiciones. La elección de una implementación basada en multiplicadores o basada en CORDIC dependerá del contexto. La multiplicación de dos números complejos representados por sus componentes reales e imaginarios (coordenadas rectangulares), por ejemplo, requiere 4 multiplicaciones, pero podría realizarse mediante un solo CORDIC operando en números complejos representados por sus coordenadas polares, especialmente si la magnitud de los números no es relevante (multiplicar un vector complejo con un vector en el círculo unitario en realidad equivale a una rotación). Los CORDIC se utilizan a menudo en circuitos de telecomunicaciones, como los convertidores descendentes digitales .
CORDIC de iteraciones dobles
En las publicaciones: http://baykov.de/CORDIC1972.htm y http://baykov.de/CORDIC1975.htm se propuso utilizar el método de doble iteración para la implementación de las funciones: arcsinX, arccosX, lnX, expX , así como para el cálculo de las funciones hiperbólicas. El método de iteraciones dobles consiste en el hecho de que, a diferencia del método CORDIC clásico, donde el valor del paso de iteración cambia CADA tiempo, es decir, en cada iteración, en el método de iteración doble, el valor del paso de iteración se repite dos veces y cambia solo a través de una iteración. De ahí que aparezca la designación del indicador de grado para iteraciones dobles: i = 1,1,2,2,3,3 ... Mientras que con iteraciones ordinarias: i = 1,2,3 ... El método de doble iteración garantiza la convergencia del método en todo el rango válido de cambios de argumentos.
La generalización de los problemas de convergencia CORDIC para el sistema numérico posicional arbitrario http://baykov.de/CORDIC1985.htm con Radix R mostró que para las funciones sin, cos, arctg, es suficiente realizar (R-1) iteraciones para cada valor de i (i = 0 o 1 an, donde n es el número de dígitos), es decir, para cada dígito del resultado. Para las funciones ln, exp, sh, ch, art, R deben realizarse iteraciones para cada valor i. Para las funciones arcsin y arccos 2 (R-1) se deben realizar iteraciones para cada dígito numérico, es decir, para cada valor de i. Para las funciones de arco arsh, el número de iteraciones será 2R para cada i, es decir, para cada dígito de resultado.
Algoritmos relacionados
CORDIC es parte de la clase de algoritmos de "desplazamiento y suma" , al igual que los algoritmos logarítmicos y exponenciales derivados del trabajo de Henry Briggs. Otro algoritmo de desplazamiento y suma que se puede utilizar para calcular muchas funciones elementales es el algoritmo BKM , que es una generalización del logaritmo y los algoritmos exponenciales al plano complejo. Por ejemplo, BKM se puede utilizar para calcular el seno y el coseno de un ángulo real (en radianes) calculando el exponencial de , cual es cis ( X ) = porque ( X ) + I pecado ( X ) {\ Displaystyle \ operatorname {cis} (x) = \ cos (x) + i \ sin (x)} . El algoritmo BKM es un poco más complejo que CORDIC, pero tiene la ventaja de que no necesita un factor de escala ( K ).
Ver también
- Métodos para calcular raíces cuadradas
- IEEE 754
- Unidades de coma flotante
- Circuitos digitales / CORDIC en Wikilibros
Referencias
- ↑ a b c Volder, Jack E. (3 de marzo de 1959). "La Técnica de Computación CORDIC" (PDF) . Actas de la Western Joint Computer Conference (WJCC) (presentación). San Francisco, California, EE.UU .: Comité Nacional Conjunto de Computación (NJCC): 257–261 . Consultado el 2 de enero de 2016 .
- ^ a b Volder, Jack E. (25 de mayo de 1959). "La técnica de computación trigonométrica CORDIC" (PDF) . Transacciones IRE en computadoras electrónicas . The Institute of Radio Engineers, Inc. (IRE) (publicado en septiembre de 1959). 8 (3): 330–334 (reimpresión: 226–230). EC-8 (3): 330–334 . Consultado el 1 de enero de 2016 .
- ^ a b Walther, John Stephen (mayo de 1971). Escrito en Palo Alto, California, EE. UU. "Un algoritmo unificado para funciones elementales" (PDF) . Actas de la Spring Joint Computer Conference . Atlantic City, Nueva Jersey, Estados Unidos: Hewlett-Packard Company . 38 : 379–385 - a través de la Federación Estadounidense de Sociedades de Procesamiento de Información (AFIPS).
- ^ a b Walther, John Stephen (junio de 2000). "La Historia de CORDIC Unificado" . The Journal of VLSI Signal Processing . Hingham, MA, EE.UU .: Kluwer Academic Publishers . 25 (2): 107–112. doi : 10.1023 / A: 1008162721424 . ISSN 0922-5773 . S2CID 26922158 .
- ^ a b c Luo, Yuanyong; Wang, Yuxuan; Ha, Yajun; Wang, Zhongfeng; Chen, Siyuan; Pan, Hongbing (septiembre de 2019). "CORDIC hiperbólico generalizado y su cálculo logarítmico y exponencial con base fija arbitraria". Transacciones IEEE en sistemas de integración a gran escala (VLSI) . 27 (9): 2156–2169. doi : 10.1109 / TVLSI.2019.2919557 . S2CID 196171166 .
- ^ a b Luo, Yuanyong; Wang, Yuxuan; Ha, Yajun; Wang, Zhongfeng; Chen, Siyuan; Pan, Hongbing (septiembre de 2019). "Correcciones a" CORDIC hiperbólico generalizado y su cálculo logarítmico y exponencial con base fija arbitraria " ". Transacciones IEEE en sistemas de integración a gran escala (VLSI) . 27 (9): 2222. doi : 10.1109 / TVLSI.2019.2932174 .
- ^ Briggs, Henry (1624). Arithmetica Logarithmica . Londres.(Traducción: [1] Archivado el 4 de marzo de 2016 en Wayback Machine )
- ^ Laporte, Jacques (2014) [2005]. "Henry Briggs y la HP 35" . París, Francia. Archivado desde el original el 9 de marzo de 2015 . Consultado el 2 de enero de 2016 . [2]
- ^ Flor, Robert (1771). La Radix. Una nueva forma de hacer logaritmos . Londres: J. Beecroft . Consultado el 2 de enero de 2016 .
- ^ a b c Volder, Jack E. (15 de junio de 1956), Algoritmos de cálculo binario para la rotación de coordenadas y la generación de funciones (informe interno), Convair , Grupo de aeroelectrónica, IAR-1.148
- ^ a b c d e f g h yo j k l Volder, Jack E. (junio de 2000). "El nacimiento de CORDIC" (PDF) . Revista de procesamiento de señales VLSI . Hingham, MA, EE.UU .: Kluwer Academic Publishers . 25 (2): 101-105. doi : 10.1023 / A: 1008110704586 . ISSN 0922-5773 . S2CID 112881 . Archivado desde el original (PDF) el 4 de marzo de 2016 . Consultado el 2 de enero de 2016 .
- ^ Perle, Michael D. (junio de 1971), "La técnica CORDIC reduce la búsqueda de funciones trigonométricas", Computer Design , Boston, MA, EE.UU .: Computer Design Publishing Corp .: 72–78(NB. Algunas fuentes se refieren erróneamente a esto como por PZ Perle o en Component Design ).
- ^ a b c d e Schmid, Hermann (1983) [1974]. Computación decimal (1 (reimpresión) ed.). Malabar, Florida, EE.UU .: Robert E. Krieger Publishing Company. págs. 162, 165-176, 181-193. ISBN 0-89874-318-4. Consultado el 3 de enero de 2016 .(NB. Al menos algunos lotes de esta edición de reimpresión fueron erratas con páginas defectuosas 115-146).
- ^ Daggett, Dan H. (septiembre de 1959). "Conversiones decimal-binario en CORDIC" . Transacciones IRE en computadoras electrónicas . El Instituto de Ingenieros de Radio, Inc. (IRE). 8 (3): 335–339. doi : 10.1109 / TEC.1959.5222694 . ISSN 0367-9950 . EC-8 (3): 335–339 . Consultado el 2 de enero de 2016 .
- ^ Advanced Systems Group (1962-08-06), Descripción técnica del equipo de conexión de toma de arreglos (informe), Fort Worth, Texas, EE. UU .: General Dynamics , FZE-052
- ^ a b Schmid, Hermann (1974). Computación decimal (1 ed.). Binghamton, Nueva York, Estados Unidos: John Wiley & Sons, Inc. págs. 162 , 165–176, 181–193. ISBN 0-471-76180-X. Consultado el 3 de enero de 2016 .
Hasta ahora, se ha sabido que CORDIC se ha implementado solo en forma binaria. Pero, como se demostrará aquí, el algoritmo se puede modificar fácilmente para un sistema decimal. * […] * Mientras tanto, se ha descubierto que Hewlett Packard y otros fabricantes de calculadoras emplean las técnicas decimales CORDIC en sus calculadoras científicas.
- ^ a b c d Leibson, Steven (2010). "El proyecto HP 9100: una reacción exotérmica" . Consultado el 2 de enero de 2016 .
- ^ a b c Meggitt, John E. (29 de agosto de 1961). "Procesos de pseudo división y pseudo multiplicación" (PDF) . Revista de investigación y desarrollo de IBM . Riverton, Nueva Jersey, EE. UU .: IBM Corporation (publicado en abril de 1962). 6 (2): 210-226, 287. doi : 10.1147 / rd.62.0210 . Consultado el 9 de enero de 2016 .
John E. Meggitt BA, 1953; PhD, 1958, Universidad de Cambridge . Recibió el primer premio Smith en Cambridge en 1955 y eligió una beca de investigación en Emmanuel College . […] Se incorporó al Laboratorio Británico de IBM en Hursley, Winchester en 1958. Sus intereses incluyen códigos de corrección de errores y pequeñas computadoras microprogramadas.
( [3] , [4] ) - ^ a b c Cochran, David S. (19 de noviembre de 2010). "Un cuarto de siglo en HP" (entrevista mecanografiada). Museo de Historia de la Computación / HP Memories. 7: Calculadoras científicas, alrededor de 1966. CHM X5992.2011 . Consultado el 2 de enero de 2016 .
Incluso volé al sur de California para hablar con Jack Volder, quien había implementado las funciones trascendentales en la máquina Athena y hablé con él durante aproximadamente una hora. Me refirió a los artículos originales de Meggitt donde había obtenido las funciones generalizadas de pseudo división, pseudo multiplicación. […] Hice bastante investigación literaria que condujo a algunos descubrimientos muy interesantes. […] Encontré un tratado de 1624 de Henry Briggs discutiendo el cálculo de logaritmos comunes, curiosamente usé el mismo método de pseudo-división / pseudo-multiplicación que MacMillan y Volder usaron en Athena . […] Habíamos comprado un LOCI-2 de Wang Labs y reconocimos que Wang Labs LOCI II usaba el mismo algoritmo para hacer tanto raíz cuadrada como logarítmico y exponencial. Después de la introducción del 9100, nuestro departamento legal recibió una carta de Wang diciendo que habíamos infringido su patente. Y acabo de enviar una nota con la referencia de Briggs en latín y decía: "Me parece una técnica anterior ". Nunca escuchamos una palabra más.
( [5] ) - ^ a b Cochran, David S. (14 de marzo de 1966). "Acerca de la utilización de CORDIC para calcular funciones trascendentales en BCD" (comunicación privada con Jack E. Volder). Cite journal requiere
|journal=
( ayuda ) - ^ a b Osborne, Thomas E. (2010) [1994]. "La historia de Tom Osborne en sus propias palabras" . Consultado el 1 de enero de 2016 .
- ^ Leibson, Steven (2010). "El HP 9100: el viaje inicial" . Consultado el 2 de enero de 2016 .
- ^ Cochran, David S. (septiembre de 1968). "Programación interna de la calculadora 9100A" . Diario de Hewlett-Packard . Palo Alto, California, EE. UU.: Hewlett-Packard : 14–16 . Consultado el 2 de enero de 2016 .( [6] )
- ^ Ampliar su Computación Personal de potencia con el nuevo LOCI-1 logarítmica Informática Instrumento , Wang Laboratories, Inc. , 1964, pp. 2-3 , obtenidos 01/03/2016
- ^ Bensene, Rick (31 de agosto de 2013) [1997]. "Wang LOCI-2" . Museo Web de la Calculadora Antigua . Beavercreek, Oregon City, Oregon, Estados Unidos . Consultado el 3 de enero de 2016 .
- ^ "Manual de servicio de Wang LOCI" (PDF) . Wang Laboratories, Inc. 1967. L55-67 . Consultado el 14 de septiembre de 2018 .
- ^ Bensene, Rick (23 de octubre de 2004) [1997]. "Sistema de calculadora Wang Model 360SE" . Museo Web de la Calculadora Antigua . Beavercreek, Oregon City, Oregon, Estados Unidos . Consultado el 3 de enero de 2016 .
- ^ a b c d Cochran, David S. (junio de 2010). "El diseño HP-35, un caso de estudio en innovación" . Proyecto de memoria HP . Consultado el 2 de enero de 2016 .
Durante el desarrollo de la calculadora de escritorio HP 9100 fui responsable de desarrollar los algoritmos para que se ajustaran a la arquitectura sugerida por Tom Osborne. Aunque la metodología sugerida para los algoritmos provino de Malcolm McMillan, hice una cantidad considerable de lectura para comprender los cálculos básicos […] Aunque Wang Laboratories había utilizado métodos de cálculo similares, mi estudio encontró una técnica anterior con fecha de 1624 que se basaba en sus patentes. […] Esta investigación permitió la adaptación de las funciones trascendentales mediante el uso de algoritmos para satisfacer las necesidades del cliente dentro de las limitaciones del hardware. Esto resultó invaluable durante el desarrollo de HP-35 , la serie […] Power , las expansiones polinomiales , las fracciones continuas y los polinomios de Chebyshev fueron todos considerados para las funciones trascendentales. Todos fueron demasiado lentos debido al número de multiplicaciones y divisiones requeridas. El algoritmo generalizado que mejor se adaptaba a los requisitos de velocidad y eficiencia de programación para el HP-35 era un método iterativo de pseudo-división y pseudo-multiplicación descrito por primera vez en 1624 por Henry Briggs en ' Arithmetica Logarithmica ' y más tarde por Volder y Meggitt. Este es el mismo tipo de algoritmo que se utilizó en las calculadoras de escritorio HP anteriores. […] La complejidad de los algoritmos hizo que la programación multinivel fuera una necesidad. Esto significaba que la calculadora tenía que tener capacidad de subrutinas, […] Para generar una función trascendental como Arc-Hyperbolic-Tan se requerían varios niveles de subrutinas. […] Chris Clare documentó más tarde esto como metodología Algorithmic State Machine (ASM). Incluso el Seno o Coseno simple utilizó la rutina Tangente y luego calculó el Seno a partir de identidades trigonométricas. Estas arduas manipulaciones fueron necesarias para minimizar el número de programas únicos y pasos de programa […] El conjunto de instrucciones aritméticas fue diseñado específicamente para una calculadora de función trascendental decimal. Las operaciones aritméticas básicas se realizan mediante un sumador-restador de complemento de 10 que tiene rutas de datos a tres de los registros que se utilizan como almacenamiento de trabajo.
- ^ Patente estadounidense 3402285A , Wang, An , "Aparato de cálculo", publicada el 17 de septiembre de 1968, publicada el 17 de septiembre de 1968, asignada a Wang Laboratories( [7] , [8] )
- ^ DE patente 1499281B1 , Wang, An , "Rechenmaschine fuer logarithmische Rechnungen", publicada el 6 de mayo de 1970, emitida el 6 de mayo de 1970, asignada a Wang Laboratories( [9] )
- ^ Swartzlander, Jr., Earl E. (1990). Aritmética informática . 1 (2 ed.). Los Alamitos: IEEE Computer Society Press . ISBN 9780818689314. 0818689315 . Consultado el 2 de enero de 2016 .
- ^ Petrocelli, Orlando R., ed. (1972), Los mejores artículos informáticos de 1971 , Auerbach Publishers , p. 71, ISBN 0877691274, consultado el 2 de enero de 2016
- ^ Cochran, David S. (junio de 1972). "Algoritmos y precisión en la HP-35" (PDF) . Diario de Hewlett-Packard . 23 (10): 10-11.
- ^ Laporte, Jacques (6 de diciembre de 2005). "Algoritmo trigonométrico HP35" . París, Francia. Archivado desde el original el 9 de marzo de 2015 . Consultado el 2 de enero de 2016 . [10]
- ^ Laporte, Jacques (febrero de 2005) [1981]. "El secreto de los algoritmos" . L'Ordinateur Individuel . París, Francia (24). Archivado desde el original el 18 de agosto de 2016 . Consultado el 2 de enero de 2016 . [11]
- ^ Laporte, Jacques (febrero de 2012) [2006]. "Métodos dígito a dígito" . París, Francia. Archivado desde el original el 18 de agosto de 2016 . Consultado el 2 de enero de 2016 . [12]
- ^ Laporte, Jacques (febrero de 2012) [2007]. "Algoritmo de logaritmo HP 35" . París, Francia. Archivado desde el original el 18 de agosto de 2016 . Consultado el 7 de enero de 2016 . [13]
- ^ Wang, Yuxuan; Luo, Yuanyong; Wang, Zhongfeng; Shen, Qinghong; Pan, Hongbing (enero de 2020). "Arquitectura basada en GH CORDIC para calcular la raíz enésima de un número de punto flotante de precisión única". Transacciones IEEE en sistemas de integración a gran escala (VLSI) . 28 (4): 864–875. doi : 10.1109 / TVLSI.2019.2959847 . S2CID 212975618 .
- ^ Mopuri, Suresh; Acharyya, Amit (septiembre de 2019). "Metodología de diseño de arquitectura VLSI genérica de baja complejidad para cálculos de enésima raíz y enésima potencia". IEEE Transactions on Circuits and Systems I: Regular Papers . 66 (12): 4673–4686. doi : 10.1109 / TCSI.2019.2939720 . S2CID 203992880 .
- ^ Vachhani, Leena (noviembre de 2019). "CORDIC como sistema no lineal conmutado". Circuitos, sistemas y procesamiento de señales . 39 (6): 3234–3249. doi : 10.1007 / s00034-019-01295-8 . S2CID 209904108 .
- ^ Schmid, Hermann ; Bogacki, Anthony (20 de febrero de 1973). "Utilice CORDIC decimal para la generación de muchas funciones trascendentales". EDN : 64–73.
- ^ Franke, Richard (8 de mayo de 1973). Un análisis de algoritmos para la evaluación de hardware de funciones elementales (PDF) . Monterey, California, EE.UU .: Departamento de Marina , Escuela de Posgrado Naval . NPS-53FE73051A . Consultado el 3 de enero de 2016 .
- ^ a b c d e Muller, Jean-Michel (2006). Funciones elementales: algoritmos e implementación (2 ed.). Boston: Birkhäuser . pag. 134. ISBN 978-0-8176-4372-0. LCCN 2005048094 . Consultado el 1 de diciembre de 2015 .
- ^ Palmer, John F .; Morse, Stephen Paul (1984). The 8087 Primer (1 ed.). John Wiley & Sons Australia, Limited . ISBN 0471875694. 9780471875697 . Consultado el 2 de enero de 2016 .
- ^ Glass, L. Brent (enero de 1990). "Coprocesadores matemáticos: una mirada a lo que hacen y cómo lo hacen". Byte . 15 (1): 337–348. ISSN 0360-5280 .
- ^ a b c Jarvis, Pitts (1 de octubre de 1990). "Implementación de algoritmos CORDIC - Una única rutina compacta para calcular funciones trascendentales" . Diario del Dr. Dobb : 152-156. Archivado desde el original el 4 de marzo de 2016 . Consultado el 2 de enero de 2016 .
- ^ a b Yuen, AK (1988). "Procesadores de punto flotante de Intel". Registro de conferencia Electro / 88 : 48/5 / 1–7.
- ^ Meher, Pramod Kumar; Valls, Javier; Juang, Tso-Bing; Sridharan, K .; Maharatna, Koushik (22 de agosto de 2008). "50 años de CORDIC: algoritmos, arquitecturas y aplicaciones" (PDF) . IEEE Transactions on Circuits and Systems I: Regular Papers (publicado 2009-09-09). 56 (9): 1893-1907. doi : 10.1109 / TCSI.2009.2025803 . S2CID 5465045 .
- ^ Meher, Pramod Kumar; Park, Sang Yoon (febrero de 2013). "Metodología de diseño de arquitectura VLSI genérica de baja complejidad para cálculos de enésima raíz y enésima potencia". Transacciones IEEE en sistemas de integración a gran escala (VLSI) . 21 (2): 217–228. doi : 10.1109 / TVLSI.2012.2187080 . S2CID 7059383 .
- ^ Heffron, WG; LaPiana, F. (11 de diciembre de 1970). "Memorando técnico 70-2014-8: el sistema de navegación del vehículo itinerante lunar" (PDF) . NASA . Washington, DC: Bellcomm .
- ^ Smith, Earnest C .; Mastin, William C. (noviembre de 1973). "Nota técnica D-7469: Revisión de rendimiento del sistema de navegación del vehículo itinerante lunar" (PDF) . NASA . Huntsville, Alabama: Centro Marshall de Vuelos Espaciales .
- ^ Shirriff, Ken (mayo de 2020). "Extracción de constantes ROM del dado del coprocesador matemático 8087" . righto.com . Autoeditado por Ken Shirriff . Consultado el 3 de septiembre de 2020 .
La ROM contiene 16 valores arctangentes, los arctanos de 2 −n . También contiene 14 valores de registro, los registros de base 2 de (1 + 2 −n ). Estos pueden parecer valores inusuales, pero se utilizan en un algoritmo eficiente llamado CORDIC, que se inventó en 1958.
- ^ "Introducción al acelerador CORDIC mediante el paquete STM32CubeG4 MCU" (PDF) . STMircoelectronics . Consultado el 1 de enero de 2021 .
- ^ "CMSIS / CMSIS / DSP_Lib / Source / ControllerFunctions / arm_sin_cos_f32.c" . Github . BRAZO . Consultado el 1 de enero de 2021 .
- ^ "Límites de error de expansión de Taylor para seno" . Intercambio de pila de matemáticas . Consultado el 1 de enero de 2021 .
- ^ Andraka, Ray (1998). "Una encuesta de algoritmos CORDIC para computadoras basadas en FPGA" (PDF) . ACM . North Kingstown, RI, EE.UU .: Andraka Consulting Group, Inc. 0-89791-978-5 / 98/01 . Consultado el 8 de mayo de 2016 .
- ^ "Clase de Matemáticas" . Estándar de la plataforma Java (8 ed.). Oracle Corporation . 2018 [1993]. Archivado desde el original el 6 de agosto de 2018 . Consultado el 6 de agosto de 2018 .
- ^ "ldexp, ldexpf, ldexpl" . cppreference.com . 2015-06-11. Archivado desde el original el 6 de agosto de 2018 . Consultado el 6 de agosto de 2018 .
- ^ "Sección 8.3.9 Logarítmica, exponencial y escala". Manual del desarrollador de software de arquitecturas Intel 64 e IA-32 Volumen 1: Arquitectura básica (PDF) . Intel Corporation . Septiembre de 2016. págs. 8-22.
Otras lecturas
- Parini, Joseph A. (5 de septiembre de 1966). "DIVIC da respuesta a preguntas complejas de navegación". Electrónica : 105-111. ISSN 0013-5070 .(NB. DIVIC son las siglas de Digital Variable Increments Computer . Algunas fuentes se refieren erróneamente a esto como por JM Parini ).
- Anderson, Stanley F .; Earle, John G .; Goldschmidt, Robert Elliott; Powers, Don M. (1 de noviembre de 1965). "El IBM System / 360 Modelo 91: Unidad de ejecución de punto flotante" (PDF) . Revista de investigación y desarrollo de IBM . Riverton, Nueva Jersey, EE. UU. (Publicado en enero de 1967). 11 (1): 34–53. doi : 10.1147 / rd.111.0034 . Consultado el 2 de enero de 2016 .
- Liccardo, Michael A. (septiembre de 1968). Un procesador de interconexión con énfasis en el funcionamiento en modo CORDIC (tesis de maestría). Berkeley, CA, EE.UU .: Universidad de California, Berkeley , Departamento de Ingeniería Eléctrica. OCLC 500565168 .
- Patente estadounidense 3576983A , Cochran, David S., "Sistema de calculadora digital para calcular raíces cuadradas", publicada el 4 de mayo de 1971, expedida el 4 de mayo de 1971, asignada a Hewlett-Packard Co.( [14] )
- Chen, Tien Chi (julio de 1972). "Cálculo automático de exponenciales, logaritmos, razones y raíces cuadradas" (PDF) . Revista de investigación y desarrollo de IBM . 16 (4): 380–388. doi : 10.1147 / rd.164.0380 . ISSN 0018-8646 . Consultado el 2 de enero de 2016 .
- Egbert, William E. (mayo de 1977). "Algoritmos de calculadora personal I: Raíces cuadradas" (PDF) . Diario de Hewlett-Packard . Palo Alto, California, Estados Unidos: Hewlett-Packard . 28 (9): 22-24 . Consultado el 2 de enero de 2016 .( [15] )
- Egbert, William E. (junio de 1977). "Algoritmos de calculadora personal II: funciones trigonométricas" (PDF) . Diario de Hewlett-Packard . Palo Alto, California, Estados Unidos: Hewlett-Packard . 28 (10): 17-20 . Consultado el 2 de enero de 2016 .( [16] )
- Egbert, William E. (noviembre de 1977). "Algoritmos de calculadora personal III: funciones trigonométricas inversas" (PDF) . Diario de Hewlett-Packard . Palo Alto, California, Estados Unidos: Hewlett-Packard . 29 (3): 22-23 . Consultado el 2 de enero de 2016 .( [17] )
- Egbert, William E. (abril de 1978). "Algoritmos de calculadora personal IV: funciones logarítmicas" (PDF) . Diario de Hewlett-Packard . Palo Alto, California, Estados Unidos: Hewlett-Packard . 29 (8): 29–32 . Consultado el 2 de enero de 2016 .( [18] )
- Senzig, Don (1975). "Algoritmos de calculadora". IEEE Compcon Reader Digest . IEEE : 139-141. Catálogo IEEE No. 75 CH 0920-9C.
- Baykov, Vladimir D. (1972), Вопросы исследования вычисления элементарных функций по методу «цифра за цифрой»[ Problemas de evaluación de funciones elementales basada en la técnica de dígito a dígito (CORDIC) ] (tesis de doctorado) (en ruso), Universidad Estatal de Ingeniería Eléctrica de Leningrado
- Baykov, Vladimir D .; Smolov, Vladimir B. (1975). Apparaturnaja realizatsija elementarnikh funktsij v CVM Аппаратурная реализация элементарных функций в ЦВМ[ Implementación de hardware de funciones elementales en computadoras ] (en ruso). Universidad Estatal de Leningrado. Archivado desde el original el 2 de marzo de 2019 . Consultado el 2 de marzo de 2019 .
- Baykov, Vladimir D .; Seljutin, SA (1982).Вычисление элементарных функций в ЭКВМ[ Evaluación de funciones elementales en microcalculadoras ] (en ruso). Moscú: Radio i svjaz (Радио и связь).
- Baykov, Vladimir D .; Smolov, Vladimir B. (1985).Специализированные процессоры: итерационные алгоритмы и структуры[ Procesadores de propósito especial: algoritmos y estructuras iterativos ] (en ruso). Moscú: Radio i svjaz (Радио и связь).
- Coppens, Thomas, ed. (Enero de 1980). "Constantes CORDIC en TI 58/59 ROM". Boletín de intercambio de software de Texas Instruments . Kapellen, Bélgica: TISOFT. 2 (2).
- Coppens, Thomas, ed. (Abril-junio de 1980). "Esquema de cálculo de logaritmo natural / esquema de cálculo e x / esquema de cálculo 1 / x". Boletín de intercambio de software de Texas Instruments . Kapellen, Bélgica: TISOFT. 2 (3).(sobre CORDIC en TI-58 / TI-59 )
- Equipo de Productos Gráficos de TI (1995) [1993]. "Algoritmos de función trascendental" . Dallas, Texas, EE.UU .: Texas Instruments , Productos de consumo. Archivado desde el original el 17 de marzo de 2016 . Consultado el 2 de marzo de 2019 .
- Jorke, Günter; Lampe, Bernhard; Wengel, Norbert (1989). Arithmetische Algorithmen der Mikrorechentechnik (en alemán) (1 ed.). Berlín, Alemania: VEB Verlag Technik . págs. 219, 261, 271-296. ISBN 3341005153. EAN 9783341005156 . MPN 5539165. Licencia 201.370 / 4/89 . Consultado el 1 de diciembre de 2015 .
- Frerking, Marvin E. (1994). Procesamiento de señales digitales en sistemas de comunicación (1 ed.).
- Kantabutra, Vitit (1996). "Sobre hardware para calcular funciones exponenciales y trigonométricas". Transacciones IEEE en computadoras . 45 (3): 328–339. doi : 10.1109 / 12.485571 .
- Banerjee, Ayan (2001). "Realización FPGA de un procesador FFT basado en CORDIC para el procesamiento de señales biomédicas". Microprocesadores y Microsistemas . Kharagpur, Bengala Occidental, India. 25 (3): 131-142. doi : 10.1016 / S0141-9331 (01) 00106-5 .
- Kahan, William Morton (20 de mayo de 2002). "Algoritmos de pseudo-división para exponenciales y logaritmos de punto flotante" (PDF) . Berkeley, CA, EE.UU .: Universidad de California . Archivado desde el original (PDF) el 25 de diciembre de 2015 . Consultado el 15 de enero de 2016 .
- Cockrum, Chris K. (otoño de 2008). "Implementación de un algoritmo CORDIC en un convertidor digital descendente" (PDF) .
- Lakshmi, Boppana; Dhar, Anindya Sundar (6 de octubre de 2009). "Arquitecturas CORDIC: una encuesta" . Diseño VLSI . Kharagpur, Bengala Occidental, India: Departamento de Ingeniería Electrónica y Comunicaciones Eléctricas, Instituto Indio de Tecnología (publicado el 10 de octubre de 2010). 2010 : 1–19. doi : 10.1155 / 2010/794891 . 794891.
- Savard, John JG (2018) [2006]. "Técnicas aritméticas avanzadas" . quadibloc . Archivado desde el original el 3 de julio de 2018 . Consultado el 16 de julio de 2018 .
enlaces externos
- Wang, Shaoyun (julio de 2011), sitio de bibliografía CORDIC
- Soft CORDIC IP (código Verilog HDL)
- Sitio de bibliografía CORDIC
- BASIC Stamp, implementación matemática CORDIC
- Implementación CORDIC en verilog
- Vectorización CORDIC con valor objetivo arbitrario
- Implementación matemática PicBasic Pro, Pic18 CORDIC
- Implementación de Python CORDIC
- Código C simple para CORDIC de coma fija
- Tutorial e implementación de MATLAB: uso de CORDIC para estimar la fase de un número complejo
- Descripciones de CORDIC de hardware en Arx con bancos de prueba en C ++ y VHDL
- Introducción al algoritmo CORDIC
- Implementación del algoritmo CORDIC en un convertidor descendente digital
- 50 aniversario del algoritmo CORDIC
- Implementación del algoritmo CORDIC: código C de punto fijo para funciones trigonométricas e hiperbólicas , código C para prueba y verificación del rendimiento