We present a new approach to the automatic generation of adjoint codes using automatic differentiation by source transformation.
Our method relies on static checkpointing techniques applied to an extended version of the program’s call graph. A code template
is provided to implement a control structure governing the execution of the adjoint and augmented forward versions of each
subroutine in the program. These code variants are generated automatically by algorithms that are independent of the programming
language of the original code. The major advantage of this new approach is its flexibility with respect to various reversal
schemes.