@@ -190,10 +190,11 @@ function coloring(
190190 A:: AbstractMatrix ,
191191 problem:: ColoringProblem ,
192192 algo:: GreedyColoringAlgorithm ;
193- decompression_eltype:: Type{R} = Float64,
194193 symmetric_pattern:: Bool = false ,
194+ decompression_eltype:: Type{R} = Float64,
195+ decompression_uplo:: Symbol = :F ,
195196) where {R}
196- return _coloring (WithResult (), A, problem, algo, R, symmetric_pattern )
197+ return _coloring (WithResult (), A, problem, algo, symmetric_pattern, R, decompression_uplo )
197198end
198199
199200"""
@@ -229,8 +230,9 @@ function _coloring(
229230 A:: AbstractMatrix ,
230231 :: ColoringProblem{:nonsymmetric,:column} ,
231232 algo:: GreedyColoringAlgorithm ,
233+ symmetric_pattern:: Bool ,
232234 decompression_eltype:: Type ,
233- symmetric_pattern :: Bool ;
235+ decompression_uplo :: Symbol ;
234236 forced_colors:: Union{AbstractVector{<:Integer},Nothing} = nothing ,
235237)
236238 symmetric_pattern = symmetric_pattern || A isa Union{Symmetric,Hermitian}
@@ -252,8 +254,9 @@ function _coloring(
252254 A:: AbstractMatrix ,
253255 :: ColoringProblem{:nonsymmetric,:row} ,
254256 algo:: GreedyColoringAlgorithm ,
257+ symmetric_pattern:: Bool ,
255258 decompression_eltype:: Type ,
256- symmetric_pattern :: Bool ;
259+ decompression_uplo :: Symbol ;
257260 forced_colors:: Union{AbstractVector{<:Integer},Nothing} = nothing ,
258261)
259262 symmetric_pattern = symmetric_pattern || A isa Union{Symmetric,Hermitian}
@@ -275,8 +278,9 @@ function _coloring(
275278 A:: AbstractMatrix ,
276279 :: ColoringProblem{:symmetric,:column} ,
277280 algo:: GreedyColoringAlgorithm{:direct} ,
281+ symmetric_pattern:: Bool ,
278282 decompression_eltype:: Type ,
279- symmetric_pattern :: Bool ;
283+ decompression_uplo :: Symbol ;
280284 forced_colors:: Union{AbstractVector{<:Integer},Nothing} = nothing ,
281285)
282286 ag = AdjacencyGraph (A; augmented_graph= false )
@@ -286,7 +290,7 @@ function _coloring(
286290 end
287291 color, star_set = argmin (maximum ∘ first, color_and_star_set_by_order)
288292 if speed_setting isa WithResult
289- return StarSetColoringResult (A, ag, color, star_set)
293+ return StarSetColoringResult (A, ag, color, star_set; decompression_uplo )
290294 else
291295 return color
292296 end
@@ -297,8 +301,9 @@ function _coloring(
297301 A:: AbstractMatrix ,
298302 :: ColoringProblem{:symmetric,:column} ,
299303 algo:: GreedyColoringAlgorithm{:substitution} ,
300- decompression_eltype:: Type{R} ,
301304 symmetric_pattern:: Bool ,
305+ decompression_eltype:: Type{R} ,
306+ decompression_uplo:: Symbol ,
302307) where {R}
303308 ag = AdjacencyGraph (A; augmented_graph= false )
304309 color_and_tree_set_by_order = map (algo. orders) do order
@@ -307,7 +312,7 @@ function _coloring(
307312 end
308313 color, tree_set = argmin (maximum ∘ first, color_and_tree_set_by_order)
309314 if speed_setting isa WithResult
310- return TreeSetColoringResult (A, ag, color, tree_set, R)
315+ return TreeSetColoringResult (A, ag, color, tree_set, R; decompression_uplo )
311316 else
312317 return color
313318 end
@@ -318,8 +323,9 @@ function _coloring(
318323 A:: AbstractMatrix ,
319324 :: ColoringProblem{:nonsymmetric,:bidirectional} ,
320325 algo:: GreedyColoringAlgorithm{:direct} ,
326+ symmetric_pattern:: Bool ,
321327 decompression_eltype:: Type{R} ,
322- symmetric_pattern :: Bool ;
328+ decompression_uplo :: Symbol ;
323329 forced_colors:: Union{AbstractVector{<:Integer},Nothing} = nothing ,
324330) where {R}
325331 A_and_Aᵀ, edge_to_index = bidirectional_pattern (A; symmetric_pattern)
@@ -345,7 +351,9 @@ function _coloring(
345351 t -> maximum (t[3 ]) + maximum (t[4 ]), outputs_by_order
346352 ) # can't use ncolors without computing the full result
347353 if speed_setting isa WithResult
348- symmetric_result = StarSetColoringResult (A_and_Aᵀ, ag, color, star_set)
354+ symmetric_result = StarSetColoringResult (
355+ A_and_Aᵀ, ag, color, star_set; decompression_uplo= :L
356+ )
349357 return BicoloringResult (
350358 A,
351359 ag,
@@ -366,8 +374,9 @@ function _coloring(
366374 A:: AbstractMatrix ,
367375 :: ColoringProblem{:nonsymmetric,:bidirectional} ,
368376 algo:: GreedyColoringAlgorithm{:substitution} ,
369- decompression_eltype:: Type{R} ,
370377 symmetric_pattern:: Bool ,
378+ decompression_eltype:: Type{R} ,
379+ decompression_uplo:: Symbol ,
371380) where {R}
372381 A_and_Aᵀ, edge_to_index = bidirectional_pattern (A; symmetric_pattern)
373382 ag = AdjacencyGraph (A_and_Aᵀ, edge_to_index, 0 ; augmented_graph= true )
@@ -390,7 +399,9 @@ function _coloring(
390399 t -> maximum (t[3 ]) + maximum (t[4 ]), outputs_by_order
391400 ) # can't use ncolors without computing the full result
392401 if speed_setting isa WithResult
393- symmetric_result = TreeSetColoringResult (A_and_Aᵀ, ag, color, tree_set, R)
402+ symmetric_result = TreeSetColoringResult (
403+ A_and_Aᵀ, ag, color, tree_set, R; decompression_uplo= :L
404+ )
394405 return BicoloringResult (
395406 A,
396407 ag,
0 commit comments