Purpose
This is a list of research topics,
and software engineering projects, related to CppAD.
If you know of published results for any of the research topics,
please contact the project manage
so a link to the answer can be added to the CppAD documentation.
Abs-Normal Form Abs-normal
forms are
recent advent in AD and algorithms related to it are an important
research topic.
The CppAD abs_normal_fun
routine enables one to create approximations
for non-smooth functions that have higher than first order accuracy.
This opens the question of designing algorithms to take advantage of this.
Atomic Functions
Mathematical formulas for, and implementation of,
atomic functions
that make AD faster and or conserve on memory for special cases; e.g.,
special functions, sparse matrix operations.
Dynamic Parameters
CppAD provides for dynamic parameters
in a unique way (they can depend on other dynamic parameters).
This opens the question of techniques that take advantage of this.
For example, see base2ad.cpp
which uses this feature.
Optimization
There is no paper describing
the CppAD optimization
of a computational graph.
In particular, the optimization of
conditional expressions
is not well understood.
In addition, possible improvements to the optimization would be welcome.
For example, detecting places where the distributive law can be
used to reduce two multiplies and one addition to one multiply and
two additions.
Scripting Language
It would be useful to make addon
packages that
connect CppAD to a scripting languages.
The package
cppad_swig
demonstrate how one could use swig to do this and
cppad_py
is a preliminary version of such a connection to Python.
Subgraphs
The subgraph_jac_rev
method use subgraphs to compute sparsity patterns
and to evaluate sparse derivatives.
This is a new technique that should be written up.
It was invented by
Kasper Kristensen, DTU Technical University of Denmark.
See the subgraph
wish list items.
Speed
CppAD provides for some speed
comparisons between
different AD packages.
These comparisons could be improved, extended, and written up.
Input File: omh/theory/research.omh