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, &amplitude, &center, &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);
}
Esempio n. 2
0
double gsl_sf_bessel_In(const int n, const double x)
{
  EVAL_RESULT(gsl_sf_bessel_In_e(n, x, &result));
}