Apache Commons Nabla: on the fly bytecode transformations for algorithmic differentiation
This talk presents an innovative use of the Java platform: using bytecode transformations to perform mathematical differentiation. This kind of operation is at the basis of numerous algorithms. It is straightforward for small equations but becomes a daunting task when applied to complex simulation models.
Nabla (named after the differentiation operator) attempts to do it directly on compiled code and on the fly at runtime.
The various issues related to these transformations are explained (class creation, instance creation, access to private parts, data sharing between differentiated and primitive instances ...).