diff --git a/matlab/chol_SE.m b/matlab/chol_SE.m index 9c35138091609f2a23ceaa824202c4010d0b7a18..297dd24e8c3b70ada80740eea0d4ac0017360f89 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 <https://www.gnu.org/licenses/>. -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