 
 
 
AUTOMATIC PROGRAM GENERATION
USING A COMPUTER ALGEBRA SYSTEM
EFFICIENCY AND
CORRECTNESS
Abstract
   Computer Algebra systems have been used for quite some time to generate
programs (or at least portions of programs) automatically.  Early work was
almost exclusively done in order to generate derivatives, a job which was
seen as tedious and error prone.  This job was so important that a new
discipline grew out of it: Automatic Differentiation.
   
In recent times researchers and programmers realized that there are
several other advantages to automatic code generation.  In this talk we
would like to support our case by giving examples from a molecular
dynamics protein structure solver.
   
The main advantages of automatic code generation (typically from a
computer algebra system) are:
 -  Correctness, which has to be considered at various levels:
    
    -  Routine manipulations, like differentiation
    
-  Derivation of formulas from a more fundamental statement of
        the problem
    
-  Errors in the automatic code generation tend to be catastrophic
        and hence much easier to detect.
    
 
-  Efficiency
    
    -  Various mathematical transformations can be used to optimize
        code.
    
-  Usually the optimizations done are beyond the capabilities of
        even good compilers.
    
-  Code integration, macro expansion, in-lining.
    
-  Programming time saved
    
 
-  Numerical stability, detection and reporting of numerical problems.
    
    -  Singularities, discontinuities, etc.
    
 
-  Increased reliability by being able to solve the same problem in
        two completely different environments.