Skip to content

Commit de0c3b6

Browse files
committed
add eig diagonal pullback
1 parent b827f03 commit de0c3b6

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

src/pullbacks/eig.jl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,16 @@ function eig_pullback!(
7878
end
7979
return ΔA
8080
end
81+
function eig_pullback!(
82+
ΔA::Diagonal, A, DV, ΔDV, ind = Colon();
83+
degeneracy_atol::Real = default_pullback_rank_atol(DV[1]),
84+
gauge_atol::Real = default_pullback_gauge_atol(ΔDV[2])
85+
)
86+
ΔA_full = zero!(similar(ΔA, size(ΔA)))
87+
ΔA_full = eig_pullback!(ΔA_full, A, DV, ΔDV, ind; degeneracy_atol, gauge_atol)
88+
diagview(ΔA) .+= diagview(ΔA_full)
89+
return ΔA
90+
end
8191

8292
"""
8393
eig_trunc_pullback!(
@@ -151,6 +161,16 @@ function eig_trunc_pullback!(
151161
end
152162
return ΔA
153163
end
164+
function eig_trunc_pullback!(
165+
ΔA::Diagonal, A, DV, ΔDV;
166+
degeneracy_atol::Real = default_pullback_rank_atol(DV[1]),
167+
gauge_atol::Real = default_pullback_gauge_atol(ΔDV[2])
168+
)
169+
ΔA_full = zero!(similar(ΔA, size(ΔA)))
170+
ΔA_full = eig_trunc_pullback!(ΔA_full, A, DV, ΔDV; degeneracy_atol, gauge_atol)
171+
diagview(ΔA) .+= diagview(ΔA_full)
172+
return ΔA
173+
end
154174

155175
"""
156176
eig_vals_pullback!(

0 commit comments

Comments
 (0)