Compile Time Symbolic Derivation with C++ Templates
نویسندگان
چکیده
C++ templates are already recognized as a powerful linguistic mechanism, whose usefulness transcends the realization of traditional generic containers. In the same venue, this paper reports on a somewhat surprising application of templates—for computing the symbolic derivative of expression. Specifically, we describe a software package based on templates, called SEMT, which allows the programmer to create symbolic expressions, substitute variables in them, and compute their derivatives. SEMT is unique in 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 can be practically applied in the efficient, generic and easy to use implementation of many numerical algorithms.
منابع مشابه
Compile-Time Symbolic Differentiation Using C++ Expression Templates
Template metaprogramming is a popular technique for implementing compile time mechanisms for numerical computing. We demonstrate how expression templates can be used for compile time symbolic differentiation of algebraic expressions in C++ computer programs. Given a positive integer N and an algebraic function of multiple variables, the compiler generates executable code for the Nth partial der...
متن کاملUsing C++ Templates for Implementation of Patterns
Originally, templates were introduced to the C++ programming language in order to express common structure in form of parameterized types implemented as class templates. Function templates, in addition, allow expression of common functionality. Using the template language feature in C++, behavioral patterns as defined by Gamma et.al. can be implemented using templates instead of inheritance and...
متن کاملA Semantic Analysis of C++ Templates
Templates are a powerful but poorly understood feature of the C++ language. Their syntax resembles the parameterized classes of other languages (e.g., of Java). But because C++ supports template specialization, their semantics is quite different from that of parameterized classes. Template specialization provides a Turing-complete sub-language within C++ that executes at compile-time. Programme...
متن کاملFast Symbolic Evaluation of C/C++ Preprocessing Using Conditional Value
C/C++ code relying on preprocessing can be quite complex to analyze. This is often due to free preprocessing variables set at compile time. In general, preprocessing selectively compile parts of the source code based on the values of preprocessing variables which may be free. In this case, the relations between these parts can only be represented by conditional expressions using the free variab...
متن کاملA New Vectorization Technique for Expression Templates in C++
Vector operations play an important role in high performance computing and are typically provided by highly optimized libraries that implement the Basic Linear Algebra Subprograms (BLAS) interface. In C++ templates and operator overloading allow the implementation of these vector operations as expression templates which construct custom loops at compile time and providing a more abstract interf...
متن کامل