From 17bc3a8c86c4dc40065d416e4c6c5f0e22053cf7 Mon Sep 17 00:00:00 2001 From: Johannes Terblanche Date: Thu, 26 Oct 2023 09:22:04 +0200 Subject: [PATCH] Less allocs in resid2DLinear and faster mean --- src/CommonUtils.jl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/CommonUtils.jl b/src/CommonUtils.jl index e2ec70a..44e8d01 100644 --- a/src/CommonUtils.jl +++ b/src/CommonUtils.jl @@ -2,10 +2,11 @@ function resid2DLinear(μ, mus, Lambdas; diffop::Function=-) # '-' exploits EuclideanManifold commutativity a-b = b-a - dμ = broadcast(diffop, μ, mus) # mus .- μ ## μ .\ mus + # dμ = broadcast(diffop, μ, mus) # mus .- μ ## μ .\ mus # @show round.(dμ, digits=4) - ret = sum( Lambdas.*dμ ) - return ret + # ret = sum( Lambdas.*dμ ) + r = map((mu, lam) -> diffop(μ[], mu) * lam, mus, Lambdas) + return sum(r) end function solveresid2DLinear!(res, x, mus, Lambdas; diffop::Function=-)::Nothing @@ -71,7 +72,7 @@ function _getManifoldFullOrPart(mkd::ManifoldKernelDensity, aspartial::Bool=true end function Statistics.mean(mkd::ManifoldKernelDensity, aspartial::Bool=true; kwargs...) - return mean(_getManifoldFullOrPart(mkd,aspartial), getPoints(mkd, aspartial); kwargs...) + return mean(_getManifoldFullOrPart(mkd,aspartial), getPoints(mkd, aspartial), GeodesicInterpolation(); kwargs...) end """ $SIGNATURES