From 9a265a86ad0e0198d0a55dcdcffa60a242ff62ea Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Thu, 27 Feb 2025 13:56:21 +0530 Subject: [PATCH] Avoid materializing `diag` in `Diagonal` `kron` --- src/diagonal.jl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/diagonal.jl b/src/diagonal.jl index b5642800..62dee17e 100644 --- a/src/diagonal.jl +++ b/src/diagonal.jl @@ -762,16 +762,16 @@ end kron(A::Diagonal, B::Diagonal) = Diagonal(kron(A.diag, B.diag)) function kron(A::Diagonal, B::SymTridiagonal) - kdv = kron(diag(A), B.dv) + kdv = kron(A.diag, B.dv) # We don't need to drop the last element - kev = kron(diag(A), _pushzero(_evview(B))) + kev = kron(A.diag, _pushzero(_evview(B))) SymTridiagonal(kdv, kev) end function kron(A::Diagonal, B::Tridiagonal) # `_droplast!` is only guaranteed to work with `Vector` - kd = convert(Vector, kron(diag(A), B.d)) - kdl = _droplast!(convert(Vector, kron(diag(A), _pushzero(B.dl)))) - kdu = _droplast!(convert(Vector, kron(diag(A), _pushzero(B.du)))) + kd = convert(Vector, kron(A.diag, B.d)) + kdl = _droplast!(convert(Vector, kron(A.diag, _pushzero(B.dl)))) + kdu = _droplast!(convert(Vector, kron(A.diag, _pushzero(B.du)))) Tridiagonal(kdl, kd, kdu) end