Untitled-1

Back to the previous slide, on to the next slide or up to the computation overview

The SPL programming environment is based on two innovations. First, the SPL language is used to describe mathematical computations at an exceptionally high level. Second, SPL programs are converted to executable programs using a rich library of powerful program transformations. We begin by briefly discussing transformations in scientific program.

Two research communities are actively developing transformations of computational structures. The most familiar community, to computer scientists, is the programming language and compiler communities whose transformations include loop unrolling, strength reduction and other forms of program restructuring.

We claim that the computational/applied mathematicians are also developing program transformations. A simple example is Horner's rule, which converts a polynomial written as a sum of products into a recursive form that can be evaluated more efficiently. Similarly, we claim that the discretization of a differential equation is also a program transformation. At first glance these transformations may appear to be transformations of equations, but on closer examination this is not the case. For instance, the discretization of a differential equation also includes, in this example, the a time advancement loop and a strategy for choosing the next time step.

The SPL programming language is designed to support both types of transformations. Unique to our environment has been our ability to capture many of the mathematical transformations like discretization of initial value problems.

Richard Zippel