class Jac::Quadrature
Public Class Methods
alloc(p1)
click to toggle source
static VALUE rb_jac_quadrature_alloc(VALUE klass, VALUE vQ) { jac_quadrature *q; q = jac_quadrature_alloc(FIX2INT(vQ)); return Data_Wrap_Struct(klass, 0, jac_quadrature_free, q); }
Public Instance Methods
D()
click to toggle source
static VALUE rb_jac_quadrature_D(VALUE obj) { jac_quadrature *q; gsl_vector_view *v; Data_Get_Struct(obj, jac_quadrature, q); v = gsl_vector_view_alloc(); v->vector.data = q->D; v->vector.size = q->Q; v->vector.stride = 1; return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v); }
Q()
click to toggle source
static VALUE rb_jac_quadrature_Q(VALUE obj) { jac_quadrature *q; Data_Get_Struct(obj, jac_quadrature, q); return INT2FIX(q->Q); }
alpha()
click to toggle source
static VALUE rb_jac_quadrature_alpha(VALUE obj) { jac_quadrature *q; Data_Get_Struct(obj, jac_quadrature, q); return NUM2DBL(q->alpha); }
beta()
click to toggle source
static VALUE rb_jac_quadrature_beta(VALUE obj) { jac_quadrature *q; Data_Get_Struct(obj, jac_quadrature, q); return NUM2DBL(q->beta); }
differentiate(*args)
click to toggle source
static VALUE rb_jac_differentiate(int argc, VALUE *argv, VALUE obj) { jac_quadrature *q; gsl_vector *f, *fout; VALUE vfout; switch (argc) { case 1: CHECK_VECTOR(argv[0]); Data_Get_Struct(argv[0], gsl_vector, f); fout = gsl_vector_alloc(f->size); vfout = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(argv[0])), 0, gsl_vector_free, fout); break; case 2: CHECK_VECTOR(argv[0]); Data_Get_Struct(argv[0], gsl_vector, f); CHECK_VECTOR(argv[1]); Data_Get_Struct(argv[1], gsl_vector, fout); vfout = argv[1]; break; default: rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc); } Data_Get_Struct(obj, jac_quadrature, q); jac_differentiate(q, f->data, fout->data); return vfout; }
integrate(p1)
click to toggle source
static VALUE rb_jac_integrate(VALUE obj, VALUE ff) { jac_quadrature *q; gsl_vector *f; CHECK_VECTOR(ff); Data_Get_Struct(obj, jac_quadrature, q); Data_Get_Struct(ff, gsl_vector, f); return rb_float_new(jac_integrate(q, f->data)); }
interpmat_alloc(*args)
click to toggle source
static VALUE rb_jac_interpmat_alloc(int argc, VALUE *argv, VALUE obj) { int err; jac_quadrature *q; gsl_vector *xp; int np; Data_Get_Struct(obj, jac_quadrature, q); switch (argc) { case 1: CHECK_VECTOR(argv[0]); Data_Get_Struct(argv[0], gsl_vector, xp); np = xp->size; break; case 2: CHECK_VECTOR(argv[1]); Data_Get_Struct(argv[1], gsl_vector, xp); np = FIX2INT(argv[0]); break; default: rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc); } err = jac_interpmat_alloc(q, np, xp->data); return FIX2INT(err); }
interpmat_free()
click to toggle source
static VALUE rb_jac_interpmat_free(VALUE obj) { jac_quadrature *q; Data_Get_Struct(obj, jac_quadrature, q); jac_interpmat_free(q); return Qtrue; }
interpolate(*args)
click to toggle source
static VALUE rb_jac_interpolate(int argc, VALUE *argv, VALUE obj) { jac_quadrature *q; gsl_vector *f, *fout; VALUE vfout; switch (argc) { case 1: CHECK_VECTOR(argv[0]); Data_Get_Struct(argv[0], gsl_vector, f); fout = gsl_vector_alloc(f->size); vfout = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(argv[0])), 0, gsl_vector_free, fout); break; case 2: CHECK_VECTOR(argv[0]); Data_Get_Struct(argv[0], gsl_vector, f); CHECK_VECTOR(argv[1]); Data_Get_Struct(argv[1], gsl_vector, fout); vfout = argv[1]; break; default: rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc); } Data_Get_Struct(obj, jac_quadrature, q); jac_interpolate(q, f->data, fout->data); return vfout; }
type()
click to toggle source
static VALUE rb_jac_quadrature_type(VALUE obj) { jac_quadrature *q; Data_Get_Struct(obj, jac_quadrature, q); return INT2FIX((int) q->type); }
w()
click to toggle source
static VALUE rb_jac_quadrature_w(VALUE obj) { jac_quadrature *q; gsl_vector_view *v; Data_Get_Struct(obj, jac_quadrature, q); v = gsl_vector_view_alloc(); v->vector.data = q->w; v->vector.size = q->Q; v->vector.stride = 1; return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v); }
x()
click to toggle source
static VALUE rb_jac_quadrature_x(VALUE obj) { jac_quadrature *q; gsl_vector_view *v; Data_Get_Struct(obj, jac_quadrature, q); v = gsl_vector_view_alloc(); v->vector.data = q->x; v->vector.size = q->Q; v->vector.stride = 1; return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v); }
xp()
click to toggle source
static VALUE rb_jac_quadrature_xp(VALUE obj) { jac_quadrature *q; gsl_vector_view *v; Data_Get_Struct(obj, jac_quadrature, q); v = gsl_vector_view_alloc(); v->vector.data = q->w; v->vector.size = q->np; v->vector.stride = 1; return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v); }
zwd(*args)
click to toggle source
static VALUE rb_jac_quadrature_zwd(int argc, VALUE *argv, VALUE obj) { jac_quadrature *q; gsl_vector *ws; int flag = 0, type, status; double a, b; Data_Get_Struct(obj, jac_quadrature, q); switch (argc) { case 3: type = FIX2INT(argv[0]); a = NUM2DBL(argv[1]); b = NUM2DBL(argv[2]); ws = gsl_vector_alloc(q->Q); flag = 1; break; case 4: type = FIX2INT(argv[0]); a = NUM2DBL(argv[1]); b = NUM2DBL(argv[2]); Data_Get_Struct(argv[3], gsl_vector, ws); break; default: rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc); } status = jac_quadrature_zwd(q, type, a, b, ws->data); if (flag == 1) gsl_vector_free(ws); return INT2FIX(status); }