Algorithmic differentiation can provide sensitivity analysis, accurate to machine precision for all your favorite simulations. Given there are multiple techniques, like tangent and adjoint modes, check-pointing, preaccumulation, code-gen, etc., it can be challenging to apply AD in an optimal manner. Most of the time there is a more innovative way to combine the techniques, than just running plain Tangent or Adjoint AD.