I am looking at a code of an early version of Julia and there is this function, `bin2()`

that I don’t know what is it for specially I can’t see the output how can I write in Julia 1.5 ?

Neither `bin2`

nor `Base.bin2`

exist in Julia 0.4, 0.6, or 0.7. Maybe that function is coming from some package?

5 Likes

I tried to see if it’s from a package but I couldn’t tell

The fastest/simplest solution I found is:

```
julia> using Tullio
julia> x = [i*4 + j for i=0:3, j=1:4]
4×4 Matrix{Int64}:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
julia> bin2(x) = @tullio res[i,j] := x[2i,2j] + x[2i,2j-1] + x[2i-1, 2j] + x[2i-1, 2j-1]
bin2 (generic function with 1 method)
julia> bin2(x)
2×2 Matrix{Int64}:
14 22
46 54
julia> y = [i*5 + j for i=0:4, j=1:5]
5×5 Matrix{Int64}:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
julia> bin2(y)
2×2 Matrix{Int64}:
16 24
56 64
```

2 Likes

Not as fast as the Tullio example but, fwiw, a good general solution can be found in this post.

Do you know if it is possible to generalize Tulio’s approach for `k x k`

bin sizes?

1 Like

As far as I know only via metaprogramming.

I did that once for n dimensional regularizers with different step sizes.

See this issue.

2 Likes

thanks, guys now I know how to do it and what does it exactly means.