For a given function $h$, prox! functions from ShiftedProximalOperators return the value of the proximal operator while prox! function from ProximalOperator return the value of $h$ evaluate in $\mathrm{prox}_h$.
To be consistent, I think that prox! function from ShiftedProximalOperators should also return the (shifted) value of $h$.
For exemple, the Moreau envelope in ProximalOperator uses the value of $h$ as the return value of the prox function:
function (f::MoreauEnvelope)(x)
R = eltype(x)
buf = similar(x)
g_prox = prox!(buf, f.g, x, f.lambda)
return g_prox + R(1) / (2 * f.lambda) * norm(buf .- x)^2
end
The return value will be incorrect if the function is derived from ShiftedProximalOperators.
For a given function$h$ , prox! functions from $h$ evaluate in $\mathrm{prox}_h$ .
ShiftedProximalOperatorsreturn the value of the proximal operator while prox! function fromProximalOperatorreturn the value ofTo be consistent, I think that prox! function from$h$ .$h$ as the return value of the prox function:
ShiftedProximalOperatorsshould also return the (shifted) value ofFor exemple, the Moreau envelope in
ProximalOperatoruses the value ofThe return value will be incorrect if the function is derived from
ShiftedProximalOperators.