I did not see that there is a check that the three points are not aligned
the naming is not great : it is not an interpolation but a search for a local extremum; as a matter of fact I am not even sure that this extremum is constrained to lie inside the range defined by the 3 points
The confidence interval code relies on the determination of the zmin from this function, but uses chimin[ib] as the minimal value of the chi2 to compute the confidence interval. This seems inconsistent : the value of the chi2 curve at the zmin obtained by int_parab should be used instead. Thus int_parab should return the y value as well : chi2 at zmin.
I see a couple of issues with this method :