Пример #1
0
CAMLprim value ml_gsl_cheb_eval_n_err(value cheb, value order, value x)
{
  double res,err;
  gsl_cheb_eval_n_err(CHEB_VAL(cheb), Int_val(order),
		      Double_val(x), &res, &err);
  return copy_two_double_arr(res, err);
}
Пример #2
0
CAMLprim value ml_gsl_monte_plain_integrate(value fun, value xlo, value xup,
        value calls, value rng, value state)
{
    CAMLparam2(rng, state);
    double result, abserr;
    size_t dim=Double_array_length(xlo);
    LOCALARRAY(double, c_xlo, dim);
    LOCALARRAY(double, c_xup, dim);
    struct callback_params *params=CallbackParams_val(state);

    if(params->gslfun.mf.dim != dim)
        GSL_ERROR("wrong number of dimensions for function", GSL_EBADLEN);
    if(Double_array_length(xup) != dim)
        GSL_ERROR("array sizes differ", GSL_EBADLEN);
    params->closure = fun;
    memcpy(c_xlo, Double_array_val(xlo), dim*sizeof(double));
    memcpy(c_xup, Double_array_val(xup), dim*sizeof(double));
    gsl_monte_plain_integrate(&params->gslfun.mf,
                              c_xlo, c_xup, dim,
                              Int_val(calls),
                              Rng_val(rng),
                              GSLPLAINSTATE_VAL(state),
                              &result, &abserr);
    CAMLreturn(copy_two_double_arr(result, abserr));
}
Пример #3
0
CAMLprim value ml_gsl_sum_levin_utrunc_accel(value arr, value ws)
{
  double sum_accel, abserr;
  gsl_sum_levin_utrunc_accel(Double_array_val(arr), Double_array_length(arr),
			     WStrunc_val(ws), &sum_accel, &abserr);
  return copy_two_double_arr(sum_accel, abserr);
}
Пример #4
0
CAMLprim value ml_gsl_fit_mul_est(value x, value coeffs)
{
  double y,y_err;
  gsl_fit_mul_est(Double_val(x), 
		  Double_field(coeffs, 0), 
		  Double_field(coeffs, 1),
		  &y, &y_err);
  return copy_two_double_arr(y, y_err);
}
Пример #5
0
CAMLprim value ml_gsl_multifit_linear_est (value x, value c, value cov)
{
  double y, y_err;
  _DECLARE_VECTOR2(x, c);
  _DECLARE_MATRIX(cov);
  _CONVERT_VECTOR2(x, c);
  _CONVERT_MATRIX(cov);
  gsl_multifit_linear_est (&v_x, &v_c, &m_cov, &y, &y_err);
  return copy_two_double_arr (y, y_err);
}
Пример #6
0
static inline value val_of_result(gsl_sf_result *result)
{
  return copy_two_double_arr(result->val, result->err);
}