static void <%=c_iter%>(na_loop_t *const lp) { size_t i; dtype x, y, a; x = *(dtype*)(lp->args[0].ptr + lp->args[0].iter[0].pos); i = lp->narg - 2; y = *(dtype*)(lp->args[i].ptr + lp->args[i].iter[0].pos); for (; --i;) { y = m_mul(x,y); a = *(dtype*)(lp->args[i].ptr + lp->args[i].iter[0].pos); y = m_add(y,a); } i = lp->narg - 1; *(dtype*)(lp->args[i].ptr + lp->args[i].iter[0].pos) = y; } /* Calculate polynomial. `x.poly(a0,a1,a2,...,an) = a0 + a1*x + a2*x**2 + ... + an*x**n` @overload <%=name%> a0, a1, ..., an @param [Numo::NArray,Numeric] a0,a1,...,an @return [Numo::<%=class_name%>] */ static VALUE <%=c_func(-2)%>(VALUE self, VALUE args) { int argc, i; VALUE *argv; volatile VALUE v, a; ndfunc_arg_out_t aout[1] = {{cT,0}}; ndfunc_t ndf = { <%=c_iter%>, NO_LOOP, 0, 1, 0, aout }; argc = RARRAY_LEN(args); ndf.nin = argc+1; ndf.ain = ALLOCA_N(ndfunc_arg_in_t,argc+1); for (i=0; i_extract(v); }