ext/cumo/narray/gen/tmpl/accum_index.c in cumo-0.4.2 vs ext/cumo/narray/gen/tmpl/accum_index.c in cumo-0.4.3
- old
+ new
@@ -87,11 +87,11 @@
return cumo_na_ndloop(&ndf, 3, self, idx, reduce);
}
<% else %>
{
cumo_narray_t *na;
- VALUE reduce;
+ VALUE reduce, ret;
cumo_ndfunc_arg_in_t ain[2] = {{Qnil,0},{cumo_sym_reduce,0}};
cumo_ndfunc_arg_out_t aout[1] = {{0,0,0}};
cumo_ndfunc_t ndf = {0, CUMO_STRIDE_LOOP_NIP|CUMO_NDF_FLAT_REDUCE|CUMO_NDF_EXTRACT|CUMO_NDF_INDEXER_LOOP, 2,1, ain,aout};
CumoGetNArray(self,na);
@@ -113,12 +113,17 @@
<% end %>
}
if (cumo_na_has_idx_p(self)) {
VALUE copy = cumo_na_copy(self); // reduction does not support idx, make conttiguous
- return cumo_na_ndloop(&ndf, 2, copy, reduce);
+ ret = cumo_na_ndloop(&ndf, 2, copy, reduce);
} else {
- return cumo_na_ndloop(&ndf, 2, self, reduce);
+ ret = cumo_na_ndloop(&ndf, 2, self, reduce);
+ }
+ if (cumo_compatible_mode_enabled_p()) {
+ return rb_funcall(ret, rb_intern("extract_cpu"), 0);
+ } else {
+ return ret;
}
}
<% end %>
}