An improved N-dimensional optimiser

I realise I didn't blog about this N-dimensional optimiser when it was released so here is a quick overview.

In one dimension a more efficient Minimum algorithm was developed using a robust cubic interpolation. This has around 50% fewer function calls than Brent across a number of test functions.

In N dimensions an efficient BFGS algorithm was developed using in place symmetric MKL rank-k, rank-2k functions such that the main loop has no allocations. This combined with the above line minimisation results in around 50-70% fewer function calls than other BFGS algorithms across a number of test functions. The performance of the algorithm should also scale well with N.

Tolerance parameters across all of the optimisation functions have been made simple, intuative, and consistent.

Here are the code and tests.