From 9506e723c9e3a16c005320b6db1ee3ba32813b89 Mon Sep 17 00:00:00 2001 From: Johannes Pfeifer Date: Tue, 20 Sep 2022 12:42:04 +0200 Subject: [PATCH] ispd.m: filter out Octave incompatibility https://savannah.gnu.org/bugs/?63082 --- matlab/utilities/general/ispd.m | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/matlab/utilities/general/ispd.m b/matlab/utilities/general/ispd.m index a88f90e31..ff6ec1291 100644 --- a/matlab/utilities/general/ispd.m +++ b/matlab/utilities/general/ispd.m @@ -24,7 +24,7 @@ function [test, penalty] = ispd(A) %! @end deftypefn %@eod: -% Copyright © 2007-2017 Dynare Team +% Copyright © 2007-2022 Dynare Team % % This file is part of Dynare. % @@ -45,16 +45,20 @@ if ~isquare(A) error(['ispd:: Input argument ' inputname(1) ' has to be a square matrix!']) end -[cholA, info] = chol(A); +[~, info] = chol(A); test = ~info; if nargout>1 penalty = 0; if info - a = diag(eig(A)); - k = find(a<0); - if k > 0 - penalty = sum(-a(k)); + if isoctave && any(any(~isfinite(A))) % workaround for https://savannah.gnu.org/bugs/index.php?63082 + penalty = 1; + else + a = diag(eig(A)); + k = find(a<0); + if k > 0 + penalty = sum(-a(k)); + end end end end \ No newline at end of file