automatic differentiation of algorithms: theory, implementation
and applications

