@@ -769,10 +769,22 @@ end
769769function decompress! (
770770 A:: AbstractMatrix , Br:: AbstractMatrix , Bc:: AbstractMatrix , result:: BicoloringResult
771771)
772+ (; large_colptr, large_rowval, symmetric_result) = result
772773 m, n = size (A)
774+ R = eltype (A)
775+ fill! (A, zero (R))
776+ nzval = Vector {R} (undef, length (large_rowval))
777+ A_and_noAᵀ = SparseMatrixCSC (m + n, m + n, large_colptr, large_rowval, nzval)
773778 Br_and_Bc = _join_compressed! (result, Br, Bc)
774- A_and_Aᵀ = decompress (Br_and_Bc, result. symmetric_result)
775- copyto! (A, A_and_Aᵀ[(n + 1 ): (n + m), 1 : n]) # original matrix in bottom left corner
779+ decompress! (A_and_noAᵀ, Br_and_Bc, symmetric_result, :L )
780+ rvA = rowvals (A_and_noAᵀ)
781+ nzA = nonzeros (A_and_noAᵀ)
782+ for j in 1 : n
783+ for k in nzrange (A_and_noAᵀ, j)
784+ i = rvA[k]
785+ A[i - n, j] = nzA[k]
786+ end
787+ end
776788 return A
777789end
778790
@@ -781,10 +793,10 @@ function decompress!(
781793)
782794 (; large_colptr, large_rowval, symmetric_result) = result
783795 m, n = size (A)
784- Br_and_Bc = _join_compressed! (result, Br, Bc)
785796 # pretend A is larger
786797 A_and_noAᵀ = SparseMatrixCSC (m + n, m + n, large_colptr, large_rowval, A. nzval)
787798 # decompress lower triangle only
799+ Br_and_Bc = _join_compressed! (result, Br, Bc)
788800 decompress! (A_and_noAᵀ, Br_and_Bc, symmetric_result, :L )
789801 return A
790802end
0 commit comments