From 222ab12ef74f8cba26f9251d61dfae9c9c8812ec Mon Sep 17 00:00:00 2001 From: Nuwan Yapa Date: Mon, 29 Apr 2024 10:58:24 -0400 Subject: [PATCH] Kronecker sum implemented --- helper.jl | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/helper.jl b/helper.jl index 019871f..96e42e3 100644 --- a/helper.jl +++ b/helper.jl @@ -1,3 +1,5 @@ +using LinearAlgebra + "Sum over array while minimizing catastrophic cancellation as much as possible" function better_sum(arr::Array{Float64}) pos_arr = arr[arr .> 0] @@ -15,4 +17,10 @@ better_sum(arr::Array{ComplexF64}) = better_sum(real.(arr)) + 1im * better_sum(i triangle_ineq(l1, l2, L) = abs(l1 - l2) ≤ L && L ≤ (l1 + l2) "Nearest value in a list to a given reference point" -nearest(list::Array, ref) = list[argmin(norm.(list .- ref))] \ No newline at end of file +nearest(list::Array, ref) = list[argmin(norm.(list .- ref))] + +"Simple implementation of the Kronecker sum" +function kron_sum(A::AbstractMatrix, B::AbstractMatrix) + @assert size(A, 1) == size(A, 2) && size(B, 1) == size(B, 2) "Matrices should be square" + return kron(A, I(size(B, 1))) + kron(B, I(size(A, 1))) +end \ No newline at end of file