CAMLprim value ml_gsl_odeiv_control_scaled_new(value eps_abs, value eps_rel, value a_y, value a_dydt, value scale_abs) { gsl_odeiv_control *c = gsl_odeiv_control_scaled_new(Double_val(eps_abs), Double_val(eps_rel), Double_val(a_y), Double_val(a_dydt), Double_array_val(scale_abs), Double_array_length(scale_abs)); value res; Abstract_ptr(res, c); return res; }
static VALUE rb_gsl_odeiv_control_scaled_new(VALUE klass, VALUE epsabs, VALUE epsrel, VALUE ay, VALUE adydt, VALUE sc, VALUE dd) { gsl_odeiv_control *c = NULL; gsl_vector *v = NULL; Need_Float(epsabs); Need_Float(epsrel); Need_Float(ay); Need_Float(adydt); CHECK_FIXNUM(dd); CHECK_VECTOR(sc); Data_Get_Struct(sc, gsl_vector, v); c = gsl_odeiv_control_scaled_new(NUM2DBL(epsabs), NUM2DBL(epsrel), NUM2DBL(ay), NUM2DBL(adydt), v->data, FIX2INT(dd)); return Data_Wrap_Struct(klass, 0, gsl_odeiv_control_free, c); }