# HG changeset patch # User Tuomo Valkonen # Date 1574119260 18000 # Node ID 5c0f579a5d0f2649c17cc4bdf6fd42eccca7845b # Parent 957b62860ab4d7ea08ab397471671c7587b5b2b0 Added central differences fold diff -r 957b62860ab4 -r 5c0f579a5d0f src/Gradient.jl --- a/src/Gradient.jl Mon Nov 18 17:37:23 2019 -0500 +++ b/src/Gradient.jl Mon Nov 18 18:21:00 2019 -0500 @@ -11,7 +11,7 @@ export ∇₂!, ∇₂ᵀ!, ∇₂fold!, ∇₂_norm₂₂_est, ∇₂_norm₂₂_est², ∇₂_norm₂∞_est, ∇₂_norm₂∞_est², - ∇₂c!, + ∇₂c!, ∇₂cfold!, ∇₃!, ∇₃ᵀ!, vec∇₃!, vec∇₃ᵀ! @@ -129,6 +129,25 @@ end end +@inline function ∇₂cfold!(f!::Function, u, state) + n, m = size(u) + g! = (state, pt) -> begin + (i, j) = pt + g = @inbounds [(u[i+1, j]-u[i-1, j])/2, (u[i, j+1]-u[i, j-1])/2] + return f!(g, state, pt) + end + gb! = (state, pt) -> begin + (i, j) = pt + g = @inbounds [(u[min(i+1,n), j]-u[max(i-1,1), j])/2, + (u[i, min(j+1,m)]-u[i, max(j-1,1)])/2] + return f!(g, state, pt) + end + return imfold₂′!(gb!, gb!, gb!, + gb!, g!, gb!, + gb!, gb!, gb!, + size(u, 1), size(u, 2), state) +end + ######################### # 3D forward differences #########################