diff --git a/stdlib/LinearAlgebra/src/bidiag.jl b/stdlib/LinearAlgebra/src/bidiag.jl index 89bf143b3a973..9bcfc33944d99 100644 --- a/stdlib/LinearAlgebra/src/bidiag.jl +++ b/stdlib/LinearAlgebra/src/bidiag.jl @@ -503,7 +503,8 @@ end const SpecialMatrix = Union{Bidiagonal,SymTridiagonal,Tridiagonal} # to avoid ambiguity warning, but shouldn't be necessary *(A::AbstractTriangular, B::SpecialMatrix) = Array(A) * Array(B) -*(A::SpecialMatrix, B::SpecialMatrix) = Array(A) * Array(B) +# moving this to sparsearrays since it needs spzeros +# *(A::SpecialMatrix, B::SpecialMatrix) = mul!(spzeros(size(A)...), A, B) #Generic multiplication *(A::Bidiagonal{T}, B::AbstractVector{T}) where {T} = *(Array(A), B) diff --git a/stdlib/SparseArrays/src/SparseArrays.jl b/stdlib/SparseArrays/src/SparseArrays.jl index 95ef9560a809e..f693665ddee67 100644 --- a/stdlib/SparseArrays/src/SparseArrays.jl +++ b/stdlib/SparseArrays/src/SparseArrays.jl @@ -52,5 +52,6 @@ similar(B::Bidiagonal, ::Type{T}, dims::Union{Dims{1},Dims{2}}) where {T} = spze similar(D::Diagonal, ::Type{T}, dims::Union{Dims{1},Dims{2}}) where {T} = spzeros(T, dims...) similar(S::SymTridiagonal, ::Type{T}, dims::Union{Dims{1},Dims{2}}) where {T} = spzeros(T, dims...) similar(M::Tridiagonal, ::Type{T}, dims::Union{Dims{1},Dims{2}}) where {T} = spzeros(T, dims...) +*(A::Union{Bidiagonal,SymTridiagonal,Tridiagonal}, B::Union{Bidiagonal,SymTridiagonal,Tridiagonal}) = mul!(spzeros(size(A)...), A, B) end