Home Page or Table of Contents

A Scrapbook of Digital Signal Processing

Quick Sine-Table Computation

In real-time applications, it is frequently useful to generate a table of sine values for use in FFTs or in generating synthetic tones. A quick way of doing thisis to use the following relationship due to R. Singleton (Communications of the ACM, Volume 10, Number 10, October, 1967):

sin((k+1)x) = sin(kx) + sin((k+2)x) / (2 cos(x))

This is implemented by first tabling sin(0), sin(pi/4) and sin(pi/2), then filling in the other values in a binary process. For example, the next step fills in sin(pi/8) and sin(3 pi/8) using x = pi/8. The following step fills in sin(pi/16), sin(3 pi/16), sin(5 pi/16), sin(7 pi/16) using x = pi/16, and so on. A few values of cos(x) also need to be tabled before beginning the process. The process gives excellent precision, provided the division is carried out using the full mantissa of the dividend.

Home Page or Table of Contents