static VALUE rb_gsl_sf_coulomb_wave_FGp_array(VALUE obj, VALUE Lmin, VALUE kmax, VALUE eta, VALUE x) { double F_exponent, G_exponent; int status; size_t size; gsl_vector *vf = NULL, *vg = NULL, *vfp = NULL, *vgp = NULL; VALUE fary, gary, fpary, gpary; CHECK_FIXNUM(kmax); Need_Float(Lmin); Need_Float(eta); Need_Float(x); size = FIX2INT(kmax); vf = gsl_vector_alloc(size); vfp = gsl_vector_alloc(size); vg = gsl_vector_alloc(size); vgp = gsl_vector_alloc(size); status = gsl_sf_coulomb_wave_FGp_array(NUM2DBL(Lmin), size, NUM2DBL(eta), NUM2DBL(x), vf->data, vfp->data, vg->data, vgp->data, &F_exponent, &G_exponent); fary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vf); fpary =Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vfp); gary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vg); gpary =Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vgp); return rb_ary_new3(7, fary, fpary, gary, gpary, rb_float_new(F_exponent), rb_float_new(G_exponent), INT2FIX(status)); }
void coulomb_wave_FGp_array(double *L_min, int *kmax, double *eta, double *x, int *len, double *fc_array, double *fcp_array, double *gc_array, double *gcp_array, double *F_exponent, double *G_exponent, int* status) { int i; gsl_set_error_handler_off(); for(i = 0; i< *len ; i++){ status[i] = gsl_sf_coulomb_wave_FGp_array(*L_min, *kmax, eta[i], x[i], fc_array+i*(*kmax+1), fcp_array+i*(*kmax+1), gc_array+i*(*kmax+1), gcp_array+i*(*kmax+1), F_exponent+i, G_exponent+i); } }
/** * C++ version of gsl_sf_coulomb_wave_FGp_array(). * @param lam_min A real value * @param kmax An integer * @param eta A real value * @param x A real value * @param fc_array An array * @param fcp_array An array * @param gc_array An array * @param gcp_array An array * @param F_exponent A double * @param G_exponent A double * @return Error code on failure */ inline int wave_FGp_array( double lam_min, int kmax, double eta, double x, double* fc_array, double* fcp_array, double* gc_array, double* gcp_array, double* F_exponent, double* G_exponent ){ return gsl_sf_coulomb_wave_FGp_array( lam_min, kmax, eta, x, fc_array, fcp_array, gc_array, gcp_array, F_exponent, G_exponent ); }