From 3b9c75604ca6fdca03d908da806fd849f6ec00c8 Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Mon, 19 Feb 2024 18:39:01 +0100 Subject: [PATCH] in reconstruct: accumulate to a single matrix --- src/reconstruct.jl | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/reconstruct.jl b/src/reconstruct.jl index 777f54e..581309c 100644 --- a/src/reconstruct.jl +++ b/src/reconstruct.jl @@ -12,10 +12,9 @@ function reconstruct( wbdec::SW.WedderburnDecomposition, ) n = __outer_dim(wbdec) - res = sum(zip(Ms, SW.direct_summands(wbdec))) do (M, ds) - res = similar(M, n, n) + res = zeros(eltype(first(Ms)), n, n) + for (M, ds) in zip(Ms, SW.direct_summands(wbdec)) res = _reconstruct!(res, M, ds) - return res end res = average!(zero(res), res, __group_of(wbdec), wbdec.hom) return res @@ -26,11 +25,10 @@ function _reconstruct!( M::AbstractMatrix, ds::SW.DirectSummand, ) - res .= zero(eltype(res)) if !iszero(M) U = SW.image_basis(ds) d = SW.degree(ds) - res = (U' * M * U) .* d + res .+= (U' * M * U) .* d end return res end