Author: bugman Date: Tue Aug 26 11:09:30 2014 New Revision: 25269 URL: http://svn.gna.org/viewcvs/relax?rev=25269&view=rev Log: The parameter index is now passed into exponential_dI0() and exponential_dR(). This is for the relaxation curve-fitting C module so that the indices are not hardcoded. Modified: trunk/target_functions/exponential.c trunk/target_functions/exponential.h trunk/target_functions/relax_fit.c Modified: trunk/target_functions/exponential.c URL: http://svn.gna.org/viewcvs/relax/trunk/target_functions/exponential.c?rev=25269&r1=25268&r2=25269&view=diff ============================================================================== --- trunk/target_functions/exponential.c (original) +++ trunk/target_functions/exponential.c Tue Aug 26 11:09:30 2014 @@ -49,7 +49,7 @@ } } -void exponential_dI0(double I0, double R, double *relax_times, double back_calc_grad[][MAXTIMES], int num_times) { +void exponential_dI0(double I0, double R, int param_index, double *relax_times, double back_calc_grad[][MAXTIMES], int num_times) { /* Calculate the dI0 partial derivate of the 2-parameter exponential curve. */ @@ -60,16 +60,16 @@ for (i = 0; i < num_times; i++) { /* Zero Rx value */ if (R == 0.0) - back_calc_grad[1][i] = 1.0; + back_calc_grad[param_index][i] = 1.0; /* The partial derivate */ else - back_calc_grad[1][i] = exp(-relax_times[i] * R); + back_calc_grad[param_index][i] = exp(-relax_times[i] * R); } } -void exponential_dR(double I0, double R, double *relax_times, double back_calc_grad[][MAXTIMES], int num_times) { +void exponential_dR(double I0, double R, int param_index, double *relax_times, double back_calc_grad[][MAXTIMES], int num_times) { /* Calculate the dR partial derivate of the 2-parameter exponential curve. */ @@ -80,10 +80,10 @@ for (i = 0; i < num_times; i++) { /* Zero Rx value */ if (R == 0.0) - back_calc_grad[0][i] = -I0 * relax_times[i]; + back_calc_grad[param_index][i] = -I0 * relax_times[i]; /* The partial derivate */ else - back_calc_grad[0][i] = -I0 * relax_times[i] * exp(-relax_times[i] * R); + back_calc_grad[param_index][i] = -I0 * relax_times[i] * exp(-relax_times[i] * R); } } Modified: trunk/target_functions/exponential.h URL: http://svn.gna.org/viewcvs/relax/trunk/target_functions/exponential.h?rev=25269&r1=25268&r2=25269&view=diff ============================================================================== --- trunk/target_functions/exponential.h (original) +++ trunk/target_functions/exponential.h Tue Aug 26 11:09:30 2014 @@ -26,7 +26,7 @@ void exponential(double I0, double R, double *relax_times, double *back_calc, int num_times); -void exponential_dI0(double I0, double R, double *relax_times, double back_calc_grad[][MAXTIMES], int num_times); -void exponential_dR(double I0, double R, double *relax_times, double back_calc_grad[][MAXTIMES], int num_times); +void exponential_dI0(double I0, double R, int param_index, double *relax_times, double back_calc_grad[][MAXTIMES], int num_times); +void exponential_dR(double I0, double R, int param_index, double *relax_times, double back_calc_grad[][MAXTIMES], int num_times); #endif Modified: trunk/target_functions/relax_fit.c URL: http://svn.gna.org/viewcvs/relax/trunk/target_functions/relax_fit.c?rev=25269&r1=25268&r2=25269&view=diff ============================================================================== --- trunk/target_functions/relax_fit.c (original) +++ trunk/target_functions/relax_fit.c Tue Aug 26 11:09:30 2014 @@ -148,8 +148,8 @@ exponential(params[1], params[0], relax_times, back_calc, num_times); /* The partial derivates */ - exponential_dR(params[1], params[0], relax_times, back_calc_grad, num_times); - exponential_dI0(params[1], params[0], relax_times, back_calc_grad, num_times); + exponential_dR(params[1], params[0], 0, relax_times, back_calc_grad, num_times); + exponential_dI0(params[1], params[0], 1, relax_times, back_calc_grad, num_times); /* The chi-squared gradient */ dchi2(dchi2_vals, values, back_calc, back_calc_grad, sd, num_times, num_params); @@ -220,8 +220,8 @@ } /* The partial derivates */ - exponential_dR(params[1], params[0], relax_times, back_calc_grad, num_times); - exponential_dI0(params[1], params[0], relax_times, back_calc_grad, num_times); + exponential_dR(params[1], params[0], 0, relax_times, back_calc_grad, num_times); + exponential_dI0(params[1], params[0], 1, relax_times, back_calc_grad, num_times); /* Convert to a Python list of lists */ PyObject *list = PyList_New(0);