Setting an upper limit of more than 100663294.5 (tested with e.g. 100663294.6, 100663295, 1e9) causes iminuit to change small start values. Which values they are exactly changed to depends on the size of the value - 100663294.6 causes a value change to approx. 96, 1e9 causes a value change to approx. 954.
Example code, tested with iminuit==2.31.1:
from iminuit import Minuit
def indiv_lsq(bg):
return bg**2
m = Minuit(indiv_lsq,bg=1.5)
m.errordef=1
m.print_level=1
m.limits["bg"]=(1e-15, 100663294.5)
m.hesse()
print("a", m.values["bg"]) # prints 'a 1.5000000000000007'
m.limits["bg"]=(1e-15, 100663294.6)
print("b", m.values["bg"]) # prints 'b 1.5000000000000007'
m.hesse()
print("c", m.values["bg"]) # prints 'c 95.99996814728826'
This is definitely not an expected behavior. If this is however intended, Minuit should at least warn or error in this case.
Setting an upper limit of more than 100663294.5 (tested with e.g. 100663294.6, 100663295, 1e9) causes iminuit to change small start values. Which values they are exactly changed to depends on the size of the value - 100663294.6 causes a value change to approx. 96, 1e9 causes a value change to approx. 954.
Example code, tested with
iminuit==2.31.1:This is definitely not an expected behavior. If this is however intended, Minuit should at least warn or error in this case.