For Odyssée (see publications), a program is a set of Fortran-77 units (functions or subroutines), whose call-graph forms a tree. The root of the tree is called the head-unit. It is able to ``differentiate a program'', with respect to the input variables (arguments and/or common variables) of the head-unit. The result of the differentiation of a program from its head-unit with respect to a set of active inputs is a new program, which can compute at arbitrary points the derivative of the function evaluated in the original program.
Odyssée can differentiate a program as a whole, detecting active variables, those whose value depends on the variables with respect to which the function is differentiated. Both the direct and reverse modes of differentiation are implemented. The first one is appropriate for computing directional derivatives, the second is adapted to the efficient computation of gradients.
Odyssée generates :
In Direct Mode, the tangent linear application which is the Jacobian matrix times a vector.
In Reverse Mode, the cotangent linear application which is the transposed Jacobian matrix times a vector in the dual space.
1997 University of Nice Sophia Antipolis 1997 Institut National de Recherche en Informatique et en Automatique
The source code of Odyssée is distributed ftp://ftp-sop.inria.fr/tropics/odyssee
If you have got any problem installing or using Odyssée, you acn contact Odyssée team at email@example.com.
Present works on Odyssée are performed within different kinds of collaborations :
It is used at various places by academics or industries.
Here is a list of some new tools : FADBAD and TADIFF, HSL, ADMAT (ADMIT), MIPAD.