CppAD: A C++ Algorithmic Differentiation Package 20110419