private void lorentzian(double[] parameters, double[] x, ref double result, object obj)
{
double n = parameters[0];
double q = parameters[1];
double c = parameters[2];
double w = parameters[3];
if (w == 0) w = 0.001; // watch out for divide by zero
result = n + q * (1 / (1 + (((x[0] - c) * (x[0] - c)) / ((w / 2) * (w / 2)))));
}