Skip to content

Commit d8f579d

Browse files
authored
Add tests with Symmetric and Hermitian inputs (#100)
1 parent d4f0502 commit d8f579d

2 files changed

Lines changed: 24 additions & 5 deletions

File tree

src/SparseMatrixColorings.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,11 @@ using DocStringExtensions: README, EXPORTS, SIGNATURES, TYPEDEF, TYPEDFIELDS
1616
using LinearAlgebra:
1717
Adjoint,
1818
Diagonal,
19+
Hermitian,
20+
LowerTriangular,
1921
Symmetric,
2022
Transpose,
23+
UpperTriangular,
2124
adjoint,
2225
checksquare,
2326
factorize,

src/matrices.jl

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,21 @@ function matrix_versions(A)
2121
transpose(sparse(transpose(A_sparse))),
2222
adjoint(sparse(adjoint(A_sparse))),
2323
]
24-
# if issymmetric(A)
25-
# append!(versions, Symmetric.(versions))
26-
# end
24+
if issymmetric(A)
25+
lower_triangles = [
26+
Matrix(LowerTriangular(A_dense)), sparse(LowerTriangular(A_sparse))
27+
]
28+
upper_triangles = [
29+
Matrix(UpperTriangular(A_dense)), sparse(UpperTriangular(A_sparse))
30+
]
31+
symmetric_versions = vcat(
32+
Symmetric.(versions),
33+
Hermitian.(versions),
34+
Symmetric.(lower_triangles, :L),
35+
Symmetric.(upper_triangles, :U),
36+
)
37+
append!(versions, symmetric_versions)
38+
end
2739
return versions
2840
end
2941

@@ -38,11 +50,15 @@ respectful_similar(A::AbstractMatrix) = respectful_similar(A, eltype(A))
3850
respectful_similar(A::AbstractMatrix, ::Type{T}) where {T} = similar(A, T)
3951

4052
function respectful_similar(A::Transpose, ::Type{T}) where {T}
41-
return transpose(similar(parent(A), T))
53+
return transpose(respectful_similar(parent(A), T))
4254
end
4355

4456
function respectful_similar(A::Adjoint, ::Type{T}) where {T}
45-
return adjoint(similar(parent(A), T))
57+
return adjoint(respectful_similar(parent(A), T))
58+
end
59+
60+
function respectful_similar(A::Union{Symmetric,Hermitian}, ::Type{T}) where {T}
61+
return respectful_similar(sparse(A), T)
4662
end
4763

4864
"""

0 commit comments

Comments
 (0)