"This result in fval=9.8674e+59 which is clearly not small at all."
No, it is really quite good for that formula and that range of x values. With the starting values you give, a0+b0*exp(c0*x) ranges from 4.90249108584017e+39 to 4.75274499526166e+51. Suppose that your mu_perks_1938 were almost exactly those, but there was a single bit round-off error. That gives eps() in the range 6E+23 to 6E+35. square those, sum them, and you would get 4.76686006670123e+71 . So the expected residue for as close of a fit as you could realistically hope to get with those parameters is about 5E11 times larger than the residue you are seeing. Either you are getting quite lucky on matching data values bit-for-bit, or else the optimization is able to find a better fit by over 10 orders of magnitude.