37 @assert(isodd(k) && isodd(𝓁)) |
37 @assert(isodd(k) && isodd(𝓁)) |
38 |
38 |
39 res = similar(b) |
39 res = similar(b) |
40 |
40 |
41 Threads.@threads for i=1:n |
41 Threads.@threads for i=1:n |
42 for j=1:m |
42 @inbounds for j=1:m |
43 tmp = 0.0 |
43 tmp = 0.0 |
44 it₁ = inside(i, a₁, b₁, 1, n) |
44 it₁ = inside(i, a₁, b₁, 1, n) |
45 it₂ = inside(j, a₂, b₂, 1, m) |
45 it₂ = inside(j, a₂, b₂, 1, m) |
46 @inbounds for p=it₁ |
46 for p=it₁ |
47 @simd for q=it₂ |
47 @simd for q=it₂ |
48 tmp += kp[p-o₁, q-o₂]*b[i+p,j+q] |
48 tmp += kp[p-o₁, q-o₂]*b[i+p,j+q] |
49 end |
49 end |
50 end |
50 end |
51 @inbounds res[i, j] = tmp |
51 res[i, j] = tmp |
52 end |
52 end |
53 end |
53 end |
54 |
54 |
55 return res |
55 return res |
56 end |
56 end |