Levenberg-Marquardt nonlinear least squares fitting algorithm