Skip to content

Upper limits of 100663294.6 or higher increase start value to a minimal value, starting with approx. 96 #1106

Description

@2xB

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions