*Research thesis*

In this thesis we study three aspects of symbolic methods for numerical applications. One is the computing of symbolic differentiation. Specifically, we describe SEMT, a software package based onC++templates, which allows the programmer to create symbolic expressions, substitute variables in them, and compute their derivatives. The unique aspect of SEMT is that these manipulations are all done at compile time. In other words, SEMT effectively coerces the compiler to do symbolic computation as part of the compilation process. Beyond the theoretical interest, SEMT has application in an efficient, generic and easy to use implementation of many numerical algorithms. In the second part of this thesis we show that the problem of compilingC++programs is Turing complete: for every Turing machine $U$, there exists aC++program $P$, such that aC++compiler will halt compiling $P$ if and only if $U$ halts. Therefore, you should not be searching for a different vendor if yourC++compiler gets into an endless loop, or if it sets arbitrary limits on your program. The flaw is with the language. On the positive side, we have that arbitrarily complex computations can be carried out at compile time. The consequence is that a skilled programmer can employ the compiler to do whatever partial evaluation is required for optimizing the runtime. A detailed transition for any Turing Machine intoC++compile time processing using templates is provided. The third aspect is an approach for transforming systems of partial differential equations in order to obtain new formulations which are more accessible to numerical solution. An algorithm is developed for generating such transformations automatically, using symbolic computations employing Grobner bases. The algorithm is implemented using freely available software.

- MSc Seminar slides
- Thesis (pdf)
- Thesis (Latex files)
- Turing Templates Perl
script
- SEMT code
- Turing Templates Poster
- Journal paper: Automated Transformations for PDE Systems with Applications to Multigrid Solvers