scalar df_giddings(scalar x, sasfit_param *param) { scalar bckgr, amplitude, center, width; gsl_sf_result besselI1, besselI0; int status; sasfit_get_param(param, 4, &litude, ¢er, &width, &bckgr); gsl_set_error_handler_off(); status = gsl_sf_bessel_In_e(1, 0.2e1 * sqrt(center * x) / width,&besselI1); if (status) { SASFIT_CHECK_COND1((status != 0), param, "%s",gsl_strerror(status)); return 0; } status = gsl_sf_bessel_In_e(0, 0.2e1 * sqrt(center * x) / width,&besselI0); if (status) { SASFIT_CHECK_COND1((status != 0), param, "%s",gsl_strerror(status)); return 0; } return -exp(-(x + center) / width) * center * pow(x, -0.2e1) * (- besselI0.val * sqrt(center * x) + width * besselI1.val + besselI1.val * x) * pow(width, -0.2e1) * pow(center / x, -0.1e1 / 0.2e1); }
double gsl_sf_bessel_In(const int n, const double x) { EVAL_RESULT(gsl_sf_bessel_In_e(n, x, &result)); }