diff --git a/matlab/dynare_solve.m b/matlab/dynare_solve.m index 3527659419e43e63613ab7fed8090e3d3650b142..82d96d0c36602edb771c90b5d1ea3a4cb15b707d 100644 --- a/matlab/dynare_solve.m +++ b/matlab/dynare_solve.m @@ -105,7 +105,7 @@ if jacobian_flag tentative_number = tentative_number+1; x(idx) = rand(in0, 1)*10; [fvec, fjac] = feval(f, x, args{:}); - wrong_initial_guess_flag = ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:)))); + wrong_initial_guess_flag = ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:)))) || any(~isreal(fvec)) || any(~isreal(fjac(:))); end % If all previous attempts failed, try with real numbers. tentative_number = 0; @@ -113,7 +113,7 @@ if jacobian_flag tentative_number = tentative_number+1; x(idx) = randn(in0, 1)*10; [fvec, fjac] = feval(f, x, args{:}); - wrong_initial_guess_flag = ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:)))); + wrong_initial_guess_flag = ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:)))) || any(~isreal(fvec)) || any(~isreal(fjac(:))); end % Last tentative, ff all previous attempts failed, try with negative numbers. tentative_number = 0; @@ -121,7 +121,7 @@ if jacobian_flag tentative_number = tentative_number+1; x(idx) = -rand(in0, 1)*10; [fvec, fjac] = feval(f, x, args{:}); - wrong_initial_guess_flag = ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:)))); + wrong_initial_guess_flag = ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:)))) || any(~isreal(fvec)) || any(~isreal(fjac(:))); end end else