Sha256: d03904ecc47c7c94d6af5952679df8765d0d1b31ca3a3e5c130a94391b46d751

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 KB

Contents

<%
set singleton: true
%>
/*
  @overload <%=name%>(<%=args[0][1]%>,<%=args[1][1]%>)
  @param  [DFloat]   <%=args[0][1]%>
  @param  [Float]    <%=args[0][1]%>

  @overload <%=name%>(<%=args[0][1]%>,<%=args[1][1]%>,range)
  @param  [DFloat]   <%=args[0][1]%>
  @param  [Float]    <%=args[0][1]%>
  @param  [Range]    range

  @overload <%=name%>(<%=args[0][1]%>,<%=args[1][1]%>,<%=args[2][1]%>,<%=args[2][1]%>)
  @param  [DFloat]   <%=args[0][1]%>
  @param  [Float]    <%=args[1][1]%>
  @param  [Integer]  <%=args[2][1]%>
  @param  [Integer]  <%=args[3][1]%>

  allocate instance of <%=class_name%> class.

  <%= desc %>
 */
static VALUE
<%=c_func(-1)%>(int argc, VALUE *argv, VALUE klass)
{
    double *p1;
    size_t n1, lo=0, hi=0, idx;
    VALUE  v1, v2, v3, v4;
    long   beg, len;
    double x;
    int    nargs;

    nargs = rb_scan_args(argc, argv, "22", &v1, &v2, &v3, &v4);
    v1 = cast_1d_contiguous(v1, cDF);
    n1 = RNARRAY_SIZE(v1);
    x  = NUM2DBL(v2);
    switch(nargs) {
    case 4:
        v3 = rb_range_new(v3,v4,0);
    case 3:
        if (rb_range_beg_len(v3, &beg, &len, n1, 2) != Qtrue) {
            rb_raise(rb_eRangeError, "range error");
        }
        lo = beg;
        hi = beg+len-1;
        break;
    case 2:
        lo = 0;
        hi = n1-1;
    }
    p1 = (double*)na_get_pointer_for_read(v1);
    idx = <%=func_name%>(p1, x, lo, hi);
    RB_GC_GUARD(v1);

    return SIZET2NUM(idx);
}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
numo-gsl-0.1.2 ext/numo/gsl/interp/tmpl/interp_bsearch.c
numo-gsl-0.1.1 ext/numo/gsl/interp/tmpl/interp_bsearch.c
numo-gsl-0.1.0 ext/numo/gsl/interp/tmpl/interp_bsearch.c