Skip to content

Commit 60b1fea

Browse files
blegatKristofferC
authored andcommitted
Fix element type of -Symmetric(A) for e.g. Bool or JuMP.VariableRef, fixes #32374 (#32375)
(cherry picked from commit d958419)
1 parent 297bb68 commit 60b1fea

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

stdlib/LinearAlgebra/src/symmetric.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -390,8 +390,8 @@ function triu(A::Symmetric, k::Integer=0)
390390
end
391391
end
392392

393-
(-)(A::Symmetric{Tv,S}) where {Tv,S} = Symmetric{Tv,S}(-A.data, A.uplo)
394-
(-)(A::Hermitian{Tv,S}) where {Tv,S} = Hermitian{Tv,S}(-A.data, A.uplo)
393+
(-)(A::Symmetric) = Symmetric(-A.data, sym_uplo(A.uplo))
394+
(-)(A::Hermitian) = Hermitian(-A.data, sym_uplo(A.uplo))
395395

396396
## Matvec
397397
mul!(y::StridedVector{T}, A::Symmetric{T,<:StridedMatrix}, x::StridedVector{T}) where {T<:BlasFloat} =

stdlib/LinearAlgebra/test/symmetric.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ end
8888
@testset "Unary minus for Symmetric/Hermitian matrices" begin
8989
@test (-Symmetric(asym))::typeof(Symmetric(asym)) == -asym
9090
@test (-Hermitian(aherm))::typeof(Hermitian(aherm)) == -aherm
91+
@test (-Symmetric([true true; false false]))::Symmetric{Int,Matrix{Int}} == [-1 -1; -1 0]
92+
@test (-Hermitian([true false; true false]))::Hermitian{Int,Matrix{Int}} == [-1 0; 0 0]
9193
end
9294

9395
@testset "getindex and unsafe_getindex" begin

0 commit comments

Comments
 (0)