Select Git revision
dyn_second_order_solver.m
Forked from
Dynare / dynare
Source project has a limited visibility.
-
Sébastien Villemot authored
Because at some point throwing exceptions from MEX files (with mexErrMsgTxt()) was not working under Windows 64-bit, we had designed a workaround to avoid using exceptions. Most MEX files were returning an error code as their first (or sometimes last) argument, and that code would have to be checked from the MATLAB code. Since this workaround is no longer needed, this commit removes it. As a consequence, the interface of many MEX files is modified. For some background, see https://www.dynare.org/pipermail/dev/2010-September/000895.html
Sébastien Villemot authoredBecause at some point throwing exceptions from MEX files (with mexErrMsgTxt()) was not working under Windows 64-bit, we had designed a workaround to avoid using exceptions. Most MEX files were returning an error code as their first (or sometimes last) argument, and that code would have to be checked from the MATLAB code. Since this workaround is no longer needed, this commit removes it. As a consequence, the interface of many MEX files is modified. For some background, see https://www.dynare.org/pipermail/dev/2010-September/000895.html
select_qz_criterium_value.m 2.61 KiB
function options_=select_qz_criterium_value(options_)
% function options_=select_qz_criterium_value(options_)
% set the value of options_.qz_criterium depending on the Kalman filter used
%
% INPUTS
% options_: Dynare options structure
%
% OUTPUTS
% options_: Dynare options structure
%
% SPECIAL REQUIREMENTS
% none
% Copyright (C) 2016 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
% If options_.lik_init == 1
% set by default options_.qz_criterium to 1-1e-6
% and check options_.qz_criterium < 1-eps if options_.lik_init == 1
% Else
% set by default options_.qz_criterium to 1+1e-6
stack = dbstack;
if options_.particle.status
% Non linear filter
if isequal(options_.particle.initialization, 3)
if isempty(options_.qz_criterium)
options_.qz_criterium = 1+1e-6;
else
if options_.qz_criterium <= 1
fprintf('\n%s:: You set nonlinear_filter_initialization equal to 3, it is assumed that you try to estimate a non stationary model. Resetting it to 1+1e-6.\n', stack(2).file)
options_.qz_criterium = 1+1e-6;
end
end
else
if isempty(options_.qz_criterium)
options_.qz_criterium = 1-1e-6;
end
end
else
% Linear filter
if isequal(options_.lik_init,1)
if isempty(options_.qz_criterium)
options_.qz_criterium = 1-1e-6;
elseif options_.qz_criterium > 1-eps
error([stack(2).file ': option qz_criterium is too large for estimating/smoothing ' ...
'a stationary model. If your model contains unit roots, use ' ...
'option diffuse_filter'])
end
else
if isempty(options_.qz_criterium)
options_.qz_criterium = 1+1e-6;
else
if options_.qz_criterium <= 1
fprintf('\n%s:: diffuse filter is incompatible with a qz_criterium<=1. Resetting it to 1+1e-6.\n',stack(2).file)
options_.qz_criterium = 1+1e-6;
end
end
end
end