static VALUE rb_gsl_interp_eval_integ_e(VALUE obj, VALUE xxa, VALUE yya, VALUE aa, VALUE bb) { rb_gsl_interp *rgi = NULL; double *ptr1 = NULL, *ptr2 = NULL; size_t size, stridex, stridey; double y, a, b; int status; Need_Float(aa); Need_Float(bb); Data_Get_Struct(obj, rb_gsl_interp, rgi); ptr1 = get_vector_ptr(xxa, &stridex, &size); ptr2 = get_vector_ptr(yya, &stridey, &size); a = NUM2DBL(aa); b = NUM2DBL(bb); status = gsl_interp_eval_integ_e(rgi->p, ptr1, ptr2, a, b, rgi->a, &y); switch (status) { case GSL_EDOM: rb_gsl_error_handler("gsl_interp_eval_integ_e error", __FILE__, __LINE__, status); break; default: return rb_float_new(y); break; } return Qnil; }
static VALUE rb_gsl_spline_eval_integ_e(VALUE obj, VALUE a, VALUE b) { rb_gsl_spline *rgs = NULL; double val; int status; Data_Get_Struct(obj, rb_gsl_spline, rgs); Need_Float(a); Need_Float(b); status = gsl_spline_eval_integ_e(rgs->s, NUM2DBL(a), NUM2DBL(b), rgs->a, &val); switch (status) { case GSL_EDOM: rb_gsl_error_handler("gsl_spline_eval_integ_e error", __FILE__, __LINE__, status); break; default: return rb_float_new(val); break; } return Qnil; }