Similar mathematical techniques were published by
Henry Briggs as early as 1624 and Robert Flower in 1771, but CORDIC is better optimized for low-complexity finite-state CPUs. CORDIC was conceived in 1956 by
Jack E. Volder at the
aeroelectronics department of
Convair out of necessity to replace the
analog resolver in the
B-58 bomber's navigation computer with a more accurate and faster real-time digital solution. Therefore, CORDIC is sometimes referred to as a
digital resolver. In his research Volder was inspired by a formula in the 1946 edition of the
CRC Handbook of Chemistry and Physics: : \begin{align} K_n R \sin(\theta \pm \varphi) &= R \sin(\theta) \pm 2^{-n} R \cos(\theta), \\ K_n R \cos(\theta \pm \varphi) &= R \cos(\theta) \mp 2^{-n} R \sin(\theta), \\ \end{align} where \varphi is such that \tan(\varphi) = 2^{-n}, and K_n := \sqrt{1 + 2^{-2n}}. His research led to an internal technical report proposing the CORDIC algorithm to solve
sine and
cosine functions and a prototypical computer implementing it. The report also discussed the possibility to compute hyperbolic
coordinate rotation,
logarithms and
exponential functions with modified CORDIC algorithms. Utilizing CORDIC for
multiplication and
division was also conceived at this time. Based on the CORDIC principle, Dan H. Daggett, a colleague of Volder at Convair, developed conversion algorithms between binary and
binary-coded decimal (BCD). In 1958, Convair finally started to build a demonstration system to solve
radar fix–taking problems named
CORDIC I, completed in 1960 without Volder, who had left the company already. More universal
CORDIC II models
A (stationary) and
B (airborne) were built and tested by Daggett and Harry Schuss in 1962. Volder's CORDIC algorithm was first described in public in 1959, which caused it to be incorporated into navigation computers by companies including
Martin-Orlando,
Computer Control,
Litton,
Kearfott,
Lear-Siegler,
Sperry,
Raytheon, and
Collins Radio. Volder teamed up with Malcolm McMillan to build
Athena, a
fixed-point desktop calculator utilizing his binary CORDIC algorithm. The design was introduced to
Hewlett-Packard in June 1965, but not accepted. Still, McMillan introduced
David S. Cochran (HP) to Volder's algorithm and when Cochran later met Volder he referred him to a similar approach
John E. Meggitt (IBM) had proposed as
pseudo-multiplication and
pseudo-division in 1961. Meggitt's method also suggested the use of base 10 rather than
base 2, as used by Volder's CORDIC so far. These efforts led to the
ROMable logic implementation of a decimal CORDIC prototype machine inside of Hewlett-Packard in 1966, built by and conceptually derived from
Thomas E. Osborne's prototypical
Green Machine, a four-function,
floating-point desktop calculator he had completed in
DTL logic in December 1964. This project resulted in the public demonstration of Hewlett-Packard's first desktop calculator with scientific functions, the
HP 9100A in March 1968, with series production starting later that year. When
Wang Laboratories found that the HP 9100A used
an approach similar to the
factor combining method in their earlier
LOCI-1 (September 1964) and
LOCI-2 (January 1965)
Logarithmic Computing Instrument desktop calculators, they unsuccessfully accused Hewlett-Packard of infringement of one of
An Wang's patents in 1968.
John Stephen Walther at Hewlett-Packard generalized the algorithm into the
Unified CORDIC algorithm in 1971, allowing it to calculate
hyperbolic functions,
natural exponentials,
natural logarithms,
multiplications,
divisions, and
square roots. The CORDIC
subroutines for trigonometric and hyperbolic functions could share most of their code. This development resulted in the first
scientific handheld calculator, the
HP-35 in 1972. Based on hyperbolic CORDIC,
Yuanyong Luo et al. further proposed a Generalized Hyperbolic CORDIC (GH CORDIC) to directly compute logarithms and exponentials with an arbitrary fixed base in 2019. Theoretically, Hyperbolic CORDIC is a special case of GH CORDIC. Originally, CORDIC was implemented only using the
binary numeral system and despite Meggitt suggesting the use of the decimal system for his pseudo-multiplication approach, decimal CORDIC continued to remain mostly unheard of for several more years, so that
Hermann Schmid and Anthony Bogacki still suggested it as a novelty as late as 1973 and it was found only later that Hewlett-Packard had implemented it in 1966 already. Decimal CORDIC became widely used in
pocket calculators, most of which operate in binary-coded decimal (BCD) rather than binary. This change in the input and output format did not alter CORDIC's core calculation algorithms. CORDIC is particularly well-suited for handheld calculators, in which low cost – and thus low chip gate count – is much more important than speed. CORDIC has been implemented in the
ARM-based STM32G4,
Intel 8087,
80287,
80387 up to the
80486 coprocessor series as well as in the
Motorola 68881 and
68882 for some kinds of floating-point instructions, mainly as a way to reduce the gate counts (and complexity) of the
FPU sub-system. == Applications ==