@MISC{Fateman03codegeneration:, author = {Richard Fateman}, title = {Code generation: evaluating polynomials}, year = {2003} }

Share

OpenURL

Abstract

Writing a program to evaluate a given polynomial at a point can be done rather simply. If it has to be done repeatedly, efficiently, and/or accurately, a naive approach may not suffice. There is in fact a huge design space of how to approach this problem [12]. Depending upon one’s criteria, it may be worthwhile to use automated program-generation programs to write source code. Such generated code can be structured to exploit whatever special knowledge of the polynomial being evaluated may be available early, as well as the design requirements. This knowledge can include its degree, some or all of its coefficients (used in pre-computing coefficients of an auxiliary polynomial), special knowledge of the point at which it is evaluated (real or complex), special knowledge of the computer on which it is run (pipe-line depth and number of arithmetic units), the required error tolerance, and whether auxiliary information is needed such as the first or second derivative of the polynomial. It is possible also to indicate exactly the number of arithmetic operations used, and in some cases, other information describing the efficiency of the code. In this paper we describe some program-generating programs that may be of assistance. All the code is available in an on-line appendix. Although the implementation language is ANSI Standard Common Lisp, the target language is (your choice of) Lisp or C. 1