hi all, 

I want to evaluate a function at each index of an array. There is a N 
dimensional function, and I want to map it onto an N-dimensional array:

fpoly(x::Array{Real,5}) = x[1] + x[2]^2 + x[3] + x[4]^2 + x[5] 

want to do 

a = rand(2,2,2,2,2);
b = similar(a)

for i1 in indices(a,1)
for i2 in indices(a,2)
...
b[i1,i2,i3,i4,i5] = fpoly(a[i1,i2,i3,i4,i5])
end
end...

I tried:
# actually want to do it inplace
@generated function set_poly!{T,N}(a::Array{T,N})
quote
@nloops $N i a begin
@nref $N a i = @ncall $N fpoly i->a[i]
end
end
end

but that fails. I dont get further than:

macroexpand(:(@nloops 3 j a begin
        x = @ncall 3 fpoly i->a[j]
        end))

*quote  # cartesian.jl, line 62:*

*    for j_3 = indices(a,3) # cartesian.jl, line 63:*

*        nothing # cartesian.jl, line 64:*

*        begin  # cartesian.jl, line 62:*

*            for j_2 = indices(a,2) # cartesian.jl, line 63:*

*                nothing # cartesian.jl, line 64:*

*                begin  # cartesian.jl, line 62:*

*                    for j_1 = indices(a,1) # cartesian.jl, line 63:*

*                        nothing # cartesian.jl, line 64:*

*                        begin  # REPL[145], line 2:*

*                            x = fpoly(a[j],a[j],a[j])*

*                        end # cartesian.jl, line 65:*

*                        nothing*

*                    end*

*                end # cartesian.jl, line 65:*

*                nothing*

*            end*

*        end # cartesian.jl, line 65:*

*        nothing*

*    end*

*end*



*which is a start but how can I get the LHS right the indices of a right?*


Reply via email to