diff --git a/src/iminuit/cost.py b/src/iminuit/cost.py index f4677fc4..82a5d9e0 100644 --- a/src/iminuit/cost.py +++ b/src/iminuit/cost.py @@ -113,10 +113,12 @@ class documentation for details. CHISQUARE = 1.0 NEGATIVE_LOG_LIKELIHOOD = 0.5 +_SMALLEST_NORMAL = np.finfo(float).smallest_normal + def _safe_log(x): # guard against x = 0 - return np.log(x + 1e-323) + return np.log(np.maximum(_SMALLEST_NORMAL, x)) def _unbinned_nll(x): diff --git a/tests/test_cost.py b/tests/test_cost.py index 99c287d5..b5b07393 100644 --- a/tests/test_cost.py +++ b/tests/test_cost.py @@ -1125,7 +1125,7 @@ def test_multinominal_chi2(): assert multinominal_chi2(zero, zero) == 0 assert multinominal_chi2(zero, one) == 0 - assert multinominal_chi2(one, zero) == pytest.approx(1487, abs=1) + assert multinominal_chi2(one, zero) == pytest.approx(1416, abs=1) n = np.array([(0.0, 0.0)]) assert_allclose(multinominal_chi2(n, zero), 0) assert_allclose(multinominal_chi2(n, one), 0)