From fe1402b06faf323af48850235638a4fdf95da130 Mon Sep 17 00:00:00 2001 From: Chris Rackauckas Date: Fri, 11 Feb 2022 06:09:33 -0500 Subject: [PATCH] don't fill! on a SparseMatrix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ```julia julia> x = sprand(2,2,0.5) 2×2 SparseMatrixCSC{Float64, Int64} with 1 stored entry: 0.507603 ⋅ ⋅ ⋅ julia> fill!(x, true) 2×2 SparseMatrixCSC{Float64, Int64} with 4 stored entries: 1.0 1.0 1.0 1.0 ``` Seems like an issue for Base. --- src/differentiation/compute_jacobian_ad.jl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/differentiation/compute_jacobian_ad.jl b/src/differentiation/compute_jacobian_ad.jl index 0afffe28..d372126b 100644 --- a/src/differentiation/compute_jacobian_ad.jl +++ b/src/differentiation/compute_jacobian_ad.jl @@ -296,7 +296,11 @@ function forwarddiff_color_jacobian!(J::AbstractMatrix{<:Number}, color_i = 1 maxcolor = maximum(colorvec) - fill!(J, zero(eltype(J))) + if J isa SparseMatrixCSC + fill!(nonzeros(J), zero(eltype(J))) + else + fill!(J, zero(eltype(J))) + end if FiniteDiff._use_findstructralnz(sparsity) rows_index, cols_index = ArrayInterface.findstructralnz(sparsity)