This profiling shows, that Python code is about twice as slow as the C code implemented.
But it also shows that optimising with scipy.optimize.leastsq is 20 X faster.
It also gives reasonable error values.
Combining a function for a linear fit to guess the initial values, together
with scipy optimise, will be an extreme time win for estimating R2eff values fast.
A further test would be to use relax Monte-Carlo simulations for say 1000-2000 iterations,
and compare to the errors extracted from estimated covariance.