From c5557b5418185252c2814d60c9304ac8af14138d Mon Sep 17 00:00:00 2001 From: Johannes Pfeifer Date: Mon, 4 Apr 2022 13:52:54 +0200 Subject: [PATCH] chol_SE.m: fix logical condition and assure symmetry instead of erroring out --- matlab/chol_SE.m | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/matlab/chol_SE.m b/matlab/chol_SE.m index 9c3513809..297dd24e8 100644 --- a/matlab/chol_SE.m +++ b/matlab/chol_SE.m @@ -70,8 +70,10 @@ function [R,indef, E, P]=chol_SE(A,pivoting) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see . -if sum(sum(abs(A-A'))) > 0 +if sum(sum(abs(A-A'))) > 1e-8 error('A is not symmetric') +elseif sum(sum(abs(A-A'))) > 0 + A=(A+A')/2; end if nargin==1 @@ -93,7 +95,7 @@ E=zeros(n,1); % Find the maximum magnitude of the diagonal elements. If any diagonal element is negative, then phase1 is false. gammma=max(diag(A)); -if any(diag(A)) < 0 +if any(diag(A) < 0) phase1 = 0; end @@ -120,7 +122,7 @@ for j = 1:n-1 if phase1 if pivoting==1 % Find index of maximum diagonal element A(i,i) where i>=j - [tmp,imaxd] = max(diag(A(j:n,j:n))); + [~,imaxd] = max(diag(A(j:n,j:n))); imaxd=imaxd+j-1; % Pivot to the top the row and column with the max diag if (imaxd ~= j) @@ -190,7 +192,7 @@ for j = 1:n-1 if j ~= n-1 if pivoting % Find the minimum negative Gershgorin bound - [tmp,iming] = min(g(j:n)); + [~,iming] = min(g(j:n)); iming=iming+j-1; % Pivot to the top the row and column with the % minimum negative Gershgorin bound