TAF: Transformation of Algorithms in C++

TAC++ is a source-to-source translator for C(++) code,
i.e. TAC++ accepts C(++) code as input,
applies a semantic transformation,
and generates C(++) code as output.
The generated code can operate in forward or reverse mode
(tangent linear or adjoint model).
TAC++ can generate code to evaluate
Jacobian times vector products or the full Jacobian.
Higher order derivative code is generated
by applying TAC++ multiple times.
TAC++ transfers the well proven design concepts for our AD tool
TAF to C(++).

HIGHLIGHTS:

Analyses:

TAC++ normalises the code and applies a control flow analysis.
TAC++ applies an interprocedural data flow analysis.
Given the independent and dependent
variables of the specified top-level routine, TAC++ then determines all active
routines and variables and produces derivative code only for those.

Directives:

TAC++ accepts several kinds of directives.
Currently these directives are used to support the tool's code analysis.
Inclusion of directives that trigger generation of storing/reading schemes
for required values is in progress.