Skip to content

Commit cded5d5

Browse files
committed
more fixes
1 parent ffd1274 commit cded5d5

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

src/linalg.jl

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,18 @@ const DenseViewWrappers{T,S} = Union{AdjOrTrans{T,S}, HermOrSym{T,S}, UpperOrLow
5151
const QuasiSparseMatrix = Union{SparseMatrixCSCUnion2, DenseViewWrappers{<:Any,<:SparseMatrixCSCUnion2}}
5252
const QuasiStridedMatrix = Union{StridedMatrix, DenseViewWrappers{<:Any,<:StridedMatrix}}
5353

54-
matop_dest(::typeof(*), A::QuasiStridedMatrix, b::AbstractSparseVector) = Vector{TS}(undef, size(A, 1))
55-
matop_dest(::typeof(*), A, B::QuasiSparseMatrix) = similar(A, TS, (size(A, 1), size(B, 2)))
54+
matop_dest(::typeof(*), A::QuasiStridedMatrix, b::AbstractSparseVector) =
55+
Vector{promote_op(matprod, eltype(A), eltype(b))}(undef, size(A, 1))
56+
matop_dest(::typeof(*), A, B::QuasiSparseMatrix) =
57+
similar(A, promote_op(matprod, eltype(A), eltype(B)), (size(A, 1), size(B, 2)))
5658
# sparse products with banded matrices should return sparse arrays (Diagonal is handled by fallback)
57-
matop_dest(::typeof(*), ::BiTriSym, B::QuasiSparseMatrix) = similar(B, TS, size(B))
58-
matop_dest(::typeof(*), ::Diagonal, B::QuasiSparseMatrix) = similar(B, TS, size(B)) # disambiguation with LinearAlgebra
59+
matop_dest(::typeof(*), A::BiTriSym, B::QuasiSparseMatrix) =
60+
similar(B, promote_op(matprod, eltype(A), eltype(B)), size(B))
61+
# needed for disambiguation with LinearAlgebra
62+
matop_dest(::typeof(*), A::Diagonal, B::QuasiSparseMatrix) =
63+
similar(B, promote_op(matprod, eltype(A), eltype(B)), size(B))
5964
matop_dest(::typeof(*), A::QuasiSparseMatrix, B::BiTriSym) =
60-
similar(A, TS, (size(A, 1), size(B, 2)))
65+
similar(A, promote_op(matprod, eltype(A), eltype(B)), (size(A, 1), size(B, 2)))
6166

6267
for op (:+, :-), Wrapper (:Hermitian, :Symmetric)
6368
@eval begin

0 commit comments

Comments
 (0)