From 760dfdc7d57bf88804347310eea2946bd7f2ca3c Mon Sep 17 00:00:00 2001 From: kalmarek Date: Thu, 10 Jan 2019 04:48:30 +0100 Subject: [PATCH] optimisation in constraintLHS! --- src/orbitdata.jl | 15 ++++++++++----- src/sos_sdps.jl | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/orbitdata.jl b/src/orbitdata.jl index d18922e..1dfc68e 100644 --- a/src/orbitdata.jl +++ b/src/orbitdata.jl @@ -107,11 +107,7 @@ function sparsify!{T}(M::AbstractArray{T}, eps=eps(T); verbose=false) info("Sparsifying $(size(M))-matrix... ") end - for n in eachindex(M) - if abs(M[n]) < eps - M[n] = zero(T) - end - end + clamp_small!(M, eps) if verbose info("$(rpad(densM, 20)) → $(rpad(dens(M),20))), ($(countnz(M)) non-zeros)") @@ -120,6 +116,15 @@ function sparsify!{T}(M::AbstractArray{T}, eps=eps(T); verbose=false) return sparse(M) end +function clamp_small!(M::AbstractArray{T}, eps=eps(T)) where T + for n in eachindex(M) + if abs(M[n]) < eps + M[n] = zero(T) + end + end + return M +end + sparsify{T}(U::AbstractArray{T}, tol=eps(T); verbose=false) = sparsify!(deepcopy(U), tol, verbose=verbose) ############################################################################### diff --git a/src/sos_sdps.jl b/src/sos_sdps.jl index a304ef2..624a239 100644 --- a/src/sos_sdps.jl +++ b/src/sos_sdps.jl @@ -97,7 +97,7 @@ end function constraintLHS!(M, cnstr, Us, Ust, dims, eps=1000*eps(eltype(first(M)))) for π in 1:endof(Us) - M[π] = PropertyT.sparsify!(dims[π].*Ust[π]*cnstr*Us[π], eps) + M[π] = dims[π].*PropertyT.clamp_small!(Ust[π]*cnstr*Us[π], eps) end end