--------------------
Minor API change
~~~~~~~~~~~~~~~~
- If ``Minuit.hesse`` is called when ``Minuit.fmin`` is ``None``, an instance
``Minuit.fmin`` is now created. If Hesse fails, the code does not raise an exception
anymore, since now the error state can be accessed as usual from the ``Minuit.fmin``
object. Users who relied on the exception should check ``Minuit.fmin`` from now on.
New features
~~~~~~~~~~~~
- ``Minuit.scipy`` can be used to minimise with SciPy algorithms. These may succeed
when ``Minuit.migrad`` fails and support additional features. Some algorithms
allow one to pass a function that returns the Hessian matrix (which may be computed
analytically or via automatic differentiation provided by other libraries like JAX).
Other algorithms support minimisation under arbitrary non-linear constraints.
- ``util.FMin`` has new html/text representations; the field ``Valid parameters`` was
removed, a title with the name of the minimisation method was added
- ``Minuit.tol`` now accepts the values 0 and ``None``, the latter resets the default
- Builtin cost functions now support models that return arrays in long double precision
``float128``. In this case, all computations inside the cost function are also done in
higher precision.
- Builtin cost functions now raise a warning if the user-defined model does not return
a numpy array
Fixes
~~~~~
- Calling ``Minuit.migrad`` with a call limit under some circumstances used much more
calls than expected and did not report that the call limit was reached
(patch submitted to ROOT)
- ``Minuit.hesse`` no longer sets the status of the FunctionMinimum unconditionally
to valid if it was invalid before
- Repeated calls to ``Minuit.hesse`` no longer accumulate calls and eventually exhaust
the call limit, the call counter is now properly reset
- Calling ``Minuit.minos`` repeatedly now does not recompute the Hessian and avoids
a bug that used to exhaust the call limit before in this case
Documentation
~~~~~~~~~~~~~
- Tutorial notebooks are now fully integrated into the HTML documentation
- A tutorial on using constrained minimisation from SciPy for HEP task was added
Other
~~~~~
- ``util.BasicView`` is now a proper abstract base class