diff --git a/src/factorization.jl b/src/factorization.jl index 407aba1..5fa722b 100644 --- a/src/factorization.jl +++ b/src/factorization.jl @@ -334,13 +334,13 @@ function LinearAlgebra.dot(a::Factorization, b::Factorization) end function LinearAlgebra.dot(a::Factorization, b::AsymmetricFactorization) - # `⟨XΛX', UΣV'⟩ = ⟨ΛX'V, X'UΣ⟩` - XtV = a.factor' * right_factor(b) - XtU = a.factor' * left_factor(b) - XtV = MA.broadcast!!(*, XtV, XtU) - XtV = _lmul_diag!!(a.scaling, XtV) - XtV = _rmul_diag!!(XtV, b.scaling) - return sum(XtV) + # `⟨XΛX', UΣV'⟩ = ⟨U'XΛ, ΣV'X⟩` + UtX = left_factor(b)' * a.factor + VtX = right_factor(b)' * a.factor + UtX = MA.broadcast!!(*, UtX, VtX) + UtX = _rmul_diag!!(UtX, a.scaling) + UtX = _lmul_diag!!(b.scaling, UtX) + return sum(UtX) end function _dot_mat_fact(