TensorCast.jl
                                
                                 TensorCast.jl copied to clipboard
                                
                                    TensorCast.jl copied to clipboard
                            
                            
                            
                        Error in summation within @reduce
There are some issues when using @reduce as summation. Here, when define a martrx, TensorCast works well.
julia> using TensorCast
julia> A=rand(4,4);
julia> @reduce _[]:=sum(i,j) A[i,j]
0-dimensional Array{Float64, 0}:
8.519131257815888
julia> @reduce _[]:=sum(i) A[i,i]
0-dimensional Array{Float64, 0}:
1.6983845333674332
However, now if I define a 4th-order array, something wrong happens:
julia> B=rand(4,4,4,4);
julia> @reduce _[]:=sum(i) B[i,i,i,i,]
ERROR: LoadError: index i repeated in [i, i, i, i]
julia>  @reduce _[]:=sum(i,j) B[i,j,i,j]
ERROR: LoadError: index i repeated in [i, j, i, j]
What's going on is that there is special handling for the diagonal elements of a matrix, but nothing is written for repeated indices in higher dimensional arrays. There's no built-in analog of Diagonal here which does more dimensions:
julia> let v = randn(3)
       @pretty @cast _[i,i] := v[i]
       end
begin
    @boundscheck v isa Tuple || (ndims(v) == 1 || throw(ArgumentError("expected a vector or tuple v[i]")))
    wolf = Diagonal(v)
end
The extent of the documentation is this, maybe it should say more:
https://docs.juliahub.com/TensorCast/lkx9a/0.4.6/basics/#Repeated-indices