  I would like to tell a story. A story about a beautiful mathematical
relationship that elucidates the computational view on the classic subject of
trigonometry. All stories need a language, and for this particular story an
algorithmic language ought to do well. What makes a language algorithmic? From
our perspective as the functional programming community, an algorithmic
language provides means to express computation in terms of functions, with no
implementation-imposed limitations. We develop a new algorithm for the
computation of trigonometric functions on dyadic rationals, together with the
language used to express it, in Scheme. We provide a mechanically-derived
algorithm for the computation of the inverses of our target functions. We
address efficiency and accuracy concerns that pertain to the implementation of
the proposed algorithm either in hardware or software.
