From 7289e0f73a8ef46711b2436d4827efcac0ee0985 Mon Sep 17 00:00:00 2001 From: Chris Rackauckas Date: Wed, 26 Feb 2020 19:34:35 -0500 Subject: [PATCH] fix sparse matmul --- src/operations.jl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/operations.jl b/src/operations.jl index 087b94a740..9392f646c8 100644 --- a/src/operations.jl +++ b/src/operations.jl @@ -70,3 +70,11 @@ Base.convert(::Type{Expr},x::Operation) = Expr(x) # promotion Base.promote_rule(::Type{<:Constant}, ::Type{<:Operation}) = Operation Base.promote_rule(::Type{<:Operation}, ::Type{<:Constant}) = Operation + +# Fix Sparse MatMul +Base.:*(A::SparseMatrixCSC{Operation,S}, x::StridedVector{Operation}) where {S} = + (T = Operation; mul!(similar(x, T, A.m), A, x, true, false)) +Base.:*(A::SparseMatrixCSC{Tx,S}, x::StridedVector{Operation}) where {Tx,S} = + (T = LinearAlgebra.promote_op(LinearAlgebra.matprod, Operation, Tx); mul!(similar(x, T, A.m), A, x, true, false)) +Base.:*(A::SparseMatrixCSC{Operation,S}, x::StridedVector{Tx}) where {Tx,S} = + (T = LinearAlgebra.promote_op(LinearAlgebra.matprod, Operation, Tx); mul!(similar(x, T, A.m), A, x, true, false))