Skip to content

Commit 5576178

Browse files
committed
Matrix constructor from Tridiagonal
1 parent 6546108 commit 5576178

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/tridiag.jl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -635,11 +635,15 @@ axes(M::Tridiagonal) = (ax = axes(M.d,1); (ax, ax))
635635

636636
function Matrix{T}(M::Tridiagonal) where {T}
637637
A = Matrix{T}(undef, size(M))
638+
iszero(size(A,1)) && return A
638639
if haszero(T) # optimized path for types with zero(T) defined
639640
size(A,1) > 2 && fill!(A, zero(T))
640-
copyto!(diagview(A), M.d)
641-
copyto!(diagview(A,1), M.du)
642-
copyto!(diagview(A,-1), M.dl)
641+
for i in axes(M.dl,1)
642+
A[i,i] = M.d[i]
643+
A[i+1,i] = M.dl[i]
644+
A[i,i+1] = M.du[i]
645+
end
646+
A[end,end] = M.d[end]
643647
else
644648
copyto!(A, M)
645649
end

0 commit comments

Comments
 (0)