CasADi
CasADi is a symbolic framework for numeric optimization
...CasADi's backbone is a symbolic framework implementing forward and reverse modes of AD on expression graphs to construct gradients, large-and-sparse Jacobians, and Hessians. These expression graphs, encapsulated in Function objects, can be evaluated in a virtual machine or exported to stand-alone C code. Initial value problems in ordinary or differential-algebraic equations (ODE/DAE) can be calculated using explicit or implicit Runge-Kutta methods or interfaces to IDAS/CVODES from the SUNDIALS suite. Derivatives are calculated using sensitivity equations, up to arbitrary order.