(defn multidimensional-minimize
"Entrypoint for multidimensional minimization routines.
See [[emmy.numerical.multimin.nelder-mead/nelder-mead]] for the only
supported option."
[func x0 & {:keys [info?] :as opts}]
(let [result (nm/nelder-mead func x0 opts)]
(if (:converged? result)
(if info?
result
(:result result))
(u/failure-to-converge (str "multidimensional-minimize failed to converge: " result)))))