It requires the final function to have a numerically reasonable finite difference gradient, which is somewhat different from what is commonly referred to as "differentiable" - eg. the insides of that function could still use non-differentiable/non-analytic functions.
It seems to be based on numeric.js, which is based on the classic Fortran UNCMIN [1] optimizer.
It seems to be based on numeric.js, which is based on the classic Fortran UNCMIN [1] optimizer.
[1]: https://perception.lab.uiowa.edu/UNCMIN