Because I change how the loop is build in elemwise op, but for CAReduce I want to use the old make loop.
I change the make_loop for elemwise op because in the old case It use something like:

V_iter=(npy_float32*)(PyArray_DATA(V));

for(int i=0; i< n; i++)
{
npy_type &Vi = *(V_iter)
use V_i
V_iter+=V_jump
}

but this is not the best way if I want to parallelize the loop, so I change to


for(int i=0; i< n; i++)
{
npy_type &Vi = *(V_iter + i* V_jump)
use V_i
}
 
to make this I must change how make_loop defines the loop and rearrange some arguments. And I also must change how work on scalar case. In the scalar case there is no loop so I can't use the formulation above because Vi is define in the loop and depend on i. So in the scalar case I don't use make_loop.