Skip to content

Commit dc2eeb3

Browse files
committed
isposdef, and tests
also made `isapprox` a standalone testset, because it's irrelevant to `istriu`, `issymmetric`, etc
1 parent c600d52 commit dc2eeb3

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

stdlib/LinearAlgebra/src/uniformscaling.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ istril(::UniformScaling) = true
8181
issymmetric(::UniformScaling) = true
8282
ishermitian(J::UniformScaling) = isreal(J.λ)
8383

84+
isposdef(J::UniformScaling) = isreal(J.λ) && J.λ > 0
85+
8486
(+)(J::UniformScaling, x::Number) = J.λ + x
8587
(+)(x::Number, J::UniformScaling) = x + J.λ
8688
(-)(J::UniformScaling, x::Number) = J.λ - x

stdlib/LinearAlgebra/test/uniformscaling.jl

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,20 @@ end
8888
@test conj(UniformScaling(1.0+1.0im))::UniformScaling{Complex{Float64}} == UniformScaling(1.0-1.0im)
8989
end
9090

91-
@testset "istriu, istril, issymmetric, ishermitian, isapprox" begin
91+
@testset "istriu, istril, issymmetric, ishermitian, isposdef" begin
9292
@test istriu(I)
9393
@test istril(I)
9494
@test issymmetric(I)
9595
@test issymmetric(UniformScaling(complex(1.0,1.0)))
9696
@test ishermitian(I)
9797
@test !ishermitian(UniformScaling(complex(1.0,1.0)))
98+
@test isposdef(UniformScaling(rand()))
99+
@test !isposdef(UniformScaling(-rand()))
100+
@test !isposdef(UniformScaling(randn(ComplexF64)))
101+
@test !isposdef(UniformScaling(NaN))
102+
end
103+
104+
@testset "isapprox" begin
98105
@test UniformScaling(4.00000000000001) UniformScaling(4.0)
99106
@test UniformScaling(4.32) UniformScaling(4.3) rtol=0.1 atol=0.01
100107
@test UniformScaling(4.32) 4.3 * [1 0; 0 1] rtol=0.1 atol=0.01

0 commit comments

Comments
 (0)