The restrictions on the range of arguments the transcendental instructions are able to handle is a direct result of hardware resource limitations in these early floating-point units. The primary source for the implementation details of the transcendental instructions in the 8087 is:
Rafi Nave, "Implementation of transcendental functions on a numerics processor". Microprocessing and Microprogramming, Vol. 11, No. 3-4, March-April 1983, pp. 221-225
It states that the microcode size was limited to about 500 lines for all of the transcendentals combined. Because of limited hardware, the algorithms used are based on CORDIC for the initial steps, followed by rational approximation once the partial remainder has become sufficiently small.
To fit the ~30kbit microcode ROM into the chip at all with the transistor densities and die sizes available at the time (the 8087 contained more transistors than the 8086), Intel had to resort to a special four-state ROM, as described in
Rafi Nave and John Palmer, "A Numeric Data Processor". In 1980 IEEE International Solid-State Circuits Conference, Philadelphia, PA, USA, February 13-15, 1980, pp. 108-109
A second source, that pertains to the 80387 which relaxed several range restrictions on the transcendental instructions describes the same combination of CORDIC and rational approximation as was used in the 8087:
Alan K. Yuen, "Intel's Floating-Point Processors". Electro/88 Conference Record, Boston, MA, USA, May 10-12, 1988, pp. 48/5/1-7.
Palmer and Morse, who were architects of the 8086/8087, published a book on the math coprocessor:
John F. Palmer and Stephen P. Morse, "The 8087 Primer", John Wiley & Sons, 1984
In the chapter on the transcendental functions, they likewise cite the severe restrictions on microcode size as the reason for the range limitations of the built-in transcendental instructions of the 8087. The fundamental design idea was to support only the most time-consuming part of these computations in hardware and let programmers handle the argument reduction in software.
All trigonometric functions can be computed via FPTAN
and all inverse trigonometric functions can be computed via FPATAN
, as shown in "The 8087 Primer", alleviating the need for direct hardware support given the severe hardware resource limitations in the 8087. For the 80387, more hardware resources were available, which allowed support for the FSINCOS
instruction.