115115- [`ColoringProblem`](@ref)
116116- [`AbstractColoringResult`](@ref)
117117"""
118- function decompress (B:: AbstractMatrix{R} , result:: AbstractColoringResult ) where {R<: Real }
119- @compat (; S) = result
120- A = respectful_similar (S, R)
118+ function decompress (B:: AbstractMatrix , result:: AbstractColoringResult )
119+ A = respectful_similar (result. A, eltype (B))
121120 return decompress! (A, B, result)
122121end
123122
@@ -264,12 +263,11 @@ end
264263
265264# # ColumnColoringResult
266265
267- function decompress! (
268- A:: AbstractMatrix{R} , B:: AbstractMatrix{R} , result:: ColumnColoringResult
269- ) where {R<: Real }
270- @compat (; S, color) = result
266+ function decompress! (A:: AbstractMatrix , B:: AbstractMatrix , result:: ColumnColoringResult )
267+ @compat (; color) = result
268+ S = result. bg. S2
271269 check_same_pattern (A, S)
272- A . = zero (R )
270+ fill! (A, zero (eltype (A)) )
273271 rvS = rowvals (S)
274272 for j in axes (S, 2 )
275273 cj = color[j]
@@ -282,9 +280,10 @@ function decompress!(
282280end
283281
284282function decompress_single_color! (
285- A:: AbstractMatrix{R} , b:: AbstractVector{R} , c:: Integer , result:: ColumnColoringResult
286- ) where {R<: Real }
287- @compat (; S, group) = result
283+ A:: AbstractMatrix , b:: AbstractVector , c:: Integer , result:: ColumnColoringResult
284+ )
285+ @compat (; group) = result
286+ S = result. bg. S2
288287 check_same_pattern (A, S)
289288 rvS = rowvals (S)
290289 for j in group[c]
@@ -296,10 +295,9 @@ function decompress_single_color!(
296295 return A
297296end
298297
299- function decompress! (
300- A:: SparseMatrixCSC{R} , B:: AbstractMatrix{R} , result:: ColumnColoringResult
301- ) where {R<: Real }
302- @compat (; S, compressed_indices) = result
298+ function decompress! (A:: SparseMatrixCSC , B:: AbstractMatrix , result:: ColumnColoringResult )
299+ @compat (; compressed_indices) = result
300+ S = result. bg. S2
303301 check_same_pattern (A, S)
304302 nzA = nonzeros (A)
305303 for k in eachindex (nzA, compressed_indices)
@@ -309,9 +307,10 @@ function decompress!(
309307end
310308
311309function decompress_single_color! (
312- A:: SparseMatrixCSC{R} , b:: AbstractVector{R} , c:: Integer , result:: ColumnColoringResult
313- ) where {R<: Real }
314- @compat (; S, group) = result
310+ A:: SparseMatrixCSC , b:: AbstractVector , c:: Integer , result:: ColumnColoringResult
311+ )
312+ @compat (; group) = result
313+ S = result. bg. S2
315314 check_same_pattern (A, S)
316315 rvS = rowvals (S)
317316 nzA = nonzeros (A)
@@ -326,12 +325,11 @@ end
326325
327326# # RowColoringResult
328327
329- function decompress! (
330- A:: AbstractMatrix{R} , B:: AbstractMatrix{R} , result:: RowColoringResult
331- ) where {R<: Real }
332- @compat (; S, color) = result
328+ function decompress! (A:: AbstractMatrix , B:: AbstractMatrix , result:: RowColoringResult )
329+ @compat (; color) = result
330+ S = result. bg. S2
333331 check_same_pattern (A, S)
334- A . = zero (R )
332+ fill! (A, zero (eltype (A)) )
335333 rvS = rowvals (S)
336334 for j in axes (S, 2 )
337335 for k in nzrange (S, j)
@@ -344,9 +342,10 @@ function decompress!(
344342end
345343
346344function decompress_single_color! (
347- A:: AbstractMatrix{R} , b:: AbstractVector{R} , c:: Integer , result:: RowColoringResult
348- ) where {R<: Real }
349- @compat (; S, Sᵀ, group) = result
345+ A:: AbstractMatrix , b:: AbstractVector , c:: Integer , result:: RowColoringResult
346+ )
347+ @compat (; group) = result
348+ S, Sᵀ = result. bg. S2, result. bg. S1
350349 check_same_pattern (A, S)
351350 rvSᵀ = rowvals (Sᵀ)
352351 for i in group[c]
@@ -358,10 +357,9 @@ function decompress_single_color!(
358357 return A
359358end
360359
361- function decompress! (
362- A:: SparseMatrixCSC{R} , B:: AbstractMatrix{R} , result:: RowColoringResult
363- ) where {R<: Real }
364- @compat (; S, compressed_indices) = result
360+ function decompress! (A:: SparseMatrixCSC , B:: AbstractMatrix , result:: RowColoringResult )
361+ @compat (; compressed_indices) = result
362+ S = result. bg. S2
365363 check_same_pattern (A, S)
366364 nzA = nonzeros (A)
367365 for k in eachindex (nzA, compressed_indices)
@@ -373,15 +371,13 @@ end
373371# # StarSetColoringResult
374372
375373function decompress! (
376- A:: AbstractMatrix{R} ,
377- B:: AbstractMatrix{R} ,
378- result:: StarSetColoringResult ,
379- uplo:: Symbol = :F ,
380- ) where {R<: Real }
381- @compat (; S, color, star_set) = result
374+ A:: AbstractMatrix , B:: AbstractMatrix , result:: StarSetColoringResult , uplo:: Symbol = :F
375+ )
376+ @compat (; color, star_set) = result
382377 @compat (; star, hub, spokes) = star_set
378+ S = result. ag. S
383379 uplo == :F && check_same_pattern (A, S)
384- A .= zero (R )
380+ A .= zero (eltype (A) )
385381 for i in axes (A, 1 )
386382 if ! iszero (S[i, i])
387383 A[i, i] = B[i, color[i]]
@@ -403,14 +399,15 @@ function decompress!(
403399end
404400
405401function decompress_single_color! (
406- A:: AbstractMatrix{R} ,
407- b:: AbstractVector{R} ,
402+ A:: AbstractMatrix ,
403+ b:: AbstractVector ,
408404 c:: Integer ,
409405 result:: StarSetColoringResult ,
410406 uplo:: Symbol = :F ,
411- ) where {R <: Real }
412- @compat (; S, color, group, star_set) = result
407+ )
408+ @compat (; color, group, star_set) = result
413409 @compat (; hub, spokes) = star_set
410+ S = result. ag. S
414411 uplo == :F && check_same_pattern (A, S)
415412 for i in axes (A, 1 )
416413 if ! iszero (S[i, i]) && color[i] == c
@@ -434,12 +431,10 @@ function decompress_single_color!(
434431end
435432
436433function decompress! (
437- A:: SparseMatrixCSC{R} ,
438- B:: AbstractMatrix{R} ,
439- result:: StarSetColoringResult ,
440- uplo:: Symbol = :F ,
441- ) where {R<: Real }
442- @compat (; S, compressed_indices) = result
434+ A:: SparseMatrixCSC , B:: AbstractMatrix , result:: StarSetColoringResult , uplo:: Symbol = :F
435+ )
436+ @compat (; compressed_indices) = result
437+ S = result. ag. S
443438 nzA = nonzeros (A)
444439 if uplo == :F
445440 check_same_pattern (A, S)
@@ -468,13 +463,12 @@ end
468463# TODO : add method for A::SparseMatrixCSC
469464
470465function decompress! (
471- A:: AbstractMatrix{R} ,
472- B:: AbstractMatrix{R} ,
473- result:: TreeSetColoringResult ,
474- uplo:: Symbol = :F ,
475- ) where {R<: Real }
476- @compat (; S, color, vertices_by_tree, reverse_bfs_orders, buffer) = result
466+ A:: AbstractMatrix , B:: AbstractMatrix , result:: TreeSetColoringResult , uplo:: Symbol = :F
467+ )
468+ @compat (; color, vertices_by_tree, reverse_bfs_orders, buffer) = result
469+ S = result. ag. S
477470 uplo == :F && check_same_pattern (A, S)
471+ R = eltype (A)
478472 A .= zero (R)
479473
480474 if eltype (buffer) == R
@@ -513,19 +507,19 @@ end
513507# # MatrixInverseColoringResult
514508
515509function decompress! (
516- A:: AbstractMatrix{R} ,
517- B:: AbstractMatrix{R} ,
510+ A:: AbstractMatrix ,
511+ B:: AbstractMatrix ,
518512 result:: LinearSystemColoringResult ,
519513 uplo:: Symbol = :F ,
520- ) where {R <: Real }
521- @compat (;
522- S, color, strict_upper_nonzero_inds, T_factorization, strict_upper_nonzeros_A
523- ) = result
514+ )
515+ @compat (; color, strict_upper_nonzero_inds, T_factorization, strict_upper_nonzeros_A) =
516+ result
517+ S = result. ag . S
524518 uplo == :F && check_same_pattern (A, S)
525519
526520 # TODO : for some reason I cannot use ldiv! with a sparse QR
527521 strict_upper_nonzeros_A = T_factorization \ vec (B)
528- A .= zero (R )
522+ A .= zero (eltype (A) )
529523 for i in axes (A, 1 )
530524 if ! iszero (S[i, i])
531525 A[i, i] = B[i, color[i]]
0 commit comments