Adequate (automatically differentiate, equate) uses dual numbers, operator overloading, and special function overloads to calculate numeric partial derivatives of a scalar valued function with respect to any of its independent variables. The ultimate goal is to cast optimization problems as Adequate expressions, giving optimizers direct access to gradients of the objective function and constraints.