Accurate numerical derivatives in MATLAB. Complex step differentiation (CSD) is a technique for computing very accurate numerical derivatives in languages that support complex arithmetic. We describe here the development of a CSD package in MATLAB called PMAD. We have extended work done in other languages for scalars to the arrays that are fundamental to MATLAB. This extension raises questions that we have been able to resolve in a satisfactory way. Our goal has been to make it as easy as possible to compute approximate Jacobians in MATLAB that are all but exact. Although PMAD has a fast option for the expert that implements CSD as in previous work, the default is an object-oriented implementation that asks very little of the user.

This software is also peer reviewed by journal TOMS.