From 21e6811292c637c9758caf1de30a8ddf59e6122d Mon Sep 17 00:00:00 2001 From: kalmar Date: Thu, 22 Jun 2017 11:56:46 +0200 Subject: [PATCH] Move sqrtm out of check_distance_to_positive_cone --- src/PropertyT.jl | 8 +++++++- src/checksolution.jl | 7 +------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/PropertyT.jl b/src/PropertyT.jl index 2af00f8..4da5c3d 100644 --- a/src/PropertyT.jl +++ b/src/PropertyT.jl @@ -192,7 +192,13 @@ function check_property_T(name::String, S, Id, solver, upper_bound, tol, radius) info(logger, "minimum(P) = $(minimum(P))") if λ > 0 - sgap = check_distance_to_positive_cone(Δ, λ, P, 2*radius, tol=tol, rational=false) + + isapprox(eigvals(P), abs(eigvals(P)), atol=tol) || + warn("The solution matrix doesn't seem to be positive definite!") + # @assert P == Symmetric(P) + Q = real(sqrtm(Symmetric(P))) + + sgap = check_distance_to_positive_cone(Δ, λ, Q, 2*radius, tol=tol, rational=false) if isa(sgap, Interval) sgap = sgap.lo end diff --git a/src/checksolution.jl b/src/checksolution.jl index be576c6..9223567 100644 --- a/src/checksolution.jl +++ b/src/checksolution.jl @@ -110,14 +110,9 @@ function distance_to_cone(λ, sqrt_matrix::Array, Δ::GroupRingElem, wlen) return distance_to_cone end -function check_distance_to_positive_cone(Δ::GroupRingElem, λ, P, wlen; +function check_distance_to_positive_cone(Δ::GroupRingElem, λ, Q, wlen; tol=1e-7, rational=false) - isapprox(eigvals(P), abs(eigvals(P)), atol=tol) || - warn("The solution matrix doesn't seem to be positive definite!") - # @assert P == Symmetric(P) - Q = real(sqrtm(P)) - info(logger, "------------------------------------------------------------") info(logger, "") info(logger, "Checking in floating-point arithmetic...")