Skip to content

Commit 2477488

Browse files
dpoabelsiqueira
authored andcommitted
fix posdef check for matrices + add tests
fixes #102
1 parent 7a00282 commit 2477488

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/LinearOperators.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,7 @@ function check_positive_definite(op :: AbstractLinearOperator{T}; semi=false) wh
493493
return semi ? (vw 0) : (vw > 0)
494494
end
495495

496-
check_positive_definite(M :: AbstractMatrix) = check_positive_definite(LinearOperator(M))
496+
check_positive_definite(M :: AbstractMatrix; kwargs...) = check_positive_definite(LinearOperator(M); kwargs...)
497497

498498
# Special linear operators.
499499

test/test_linop.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,20 @@ function test_linop()
278278
@test(norm(A' * u - D' * u) <= ϵ * norm(u));
279279
end
280280

281+
@testset "posdef" begin
282+
v = simple_vector(ComplexF64, nrow)
283+
H = opHouseholder(v)
284+
Λ = collect(eltype(v), 1:nrow)
285+
op = H * opDiagonal(Λ) * H'
286+
@test check_positive_definite(op)
287+
@test check_positive_definite(op, semi=true)
288+
Λ = collect(eltype(v), 0:nrow-1)
289+
op = H * opDiagonal(Λ) * H'
290+
@test check_positive_definite(op, semi=true)
291+
A = Matrix(op)
292+
@test check_positive_definite(A, semi=true)
293+
end
294+
281295
@testset "Hermitian" begin
282296
A = simple_matrix(ComplexF64, nrow, nrow)
283297
d = real.(diag(A)); A = tril(A, -1);

0 commit comments

Comments
 (0)