Moreover, the code which it generates can be platform specific. Such tilings are fiendishly complicated to implement, and are currently far beyond the ability of optimizing compilers. Such a framework for finite-differenced PDEs would require users to provide their stencil operation and boundary conditions. These would be combined with the generic IST code to produce a near-optimal implementation. It's often possible to speed up an algorithm by specializing it for a particular situation.
Many compilers perform very limited forms of partial evaluation.
Generative metaprogramming provides an alternative to partial evaluation. The term implies programs which generate source code for specialized algorithms. Template metaprograms can be used to specialize algorithms. For example, an FFT implemented using template metaprograms can calculate the appropriate complex roots of 1 and array shuffle at compile time, unroll all the loops, and output a solid block of floating-point math code. An important distinction between template metaprograms and partial evaluation is that the algorithm specializations produced by template metaprograms are unlimited in complexity and directed - one has complete control over exactly which optimizations are performed.