Ticket #59: add cases for errors that were not being caught and convert AIM error codes so that they don't overlap with other error codes in print_info
parent
9ae3115b9d
commit
85332744d8
|
@ -0,0 +1,58 @@
|
||||||
|
function [info] = convertAimCodeToInfo(aimCode)
|
||||||
|
% function [info] = convertAimCodeToInfo(aimCode)
|
||||||
|
% Returns an appropriate code for print_info
|
||||||
|
%
|
||||||
|
% INPUTS
|
||||||
|
% aimCode [integer] code returned by AIM
|
||||||
|
% (aimCode==1) e='Aim: unique solution.';
|
||||||
|
% (aimCode==2) e='Aim: roots not correctly computed by real_schur.';
|
||||||
|
% (aimCode==3) e='Aim: too many big roots.';
|
||||||
|
% (aimCode==35) e='Aim: too many big roots, and q(:,right) is singular.';
|
||||||
|
% (aimCode==4) e='Aim: too few big roots.';
|
||||||
|
% (aimCode==45) e='Aim: too few big roots, and q(:,right) is singular.';
|
||||||
|
% (aimCode==5) e='Aim: q(:,right) is singular.';
|
||||||
|
% (aimCode==61) e='Aim: too many exact shiftrights.';
|
||||||
|
% (aimCode==62) e='Aim: too many numeric shiftrights.';
|
||||||
|
%
|
||||||
|
% OUTPUTS
|
||||||
|
% info [integer] Code to be used to print error in print_info.m
|
||||||
|
|
||||||
|
% Copyright (C) 2011 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/>.
|
||||||
|
|
||||||
|
switch aimCode
|
||||||
|
case 1
|
||||||
|
info = 0; % no problem encountered
|
||||||
|
case 2
|
||||||
|
info = 102;
|
||||||
|
case 3
|
||||||
|
info = 103;
|
||||||
|
case 35
|
||||||
|
info = 135;
|
||||||
|
case 4
|
||||||
|
info = 104;
|
||||||
|
case 45
|
||||||
|
info = 145;
|
||||||
|
case 5
|
||||||
|
info = 105;
|
||||||
|
case 61
|
||||||
|
info = 161;
|
||||||
|
case 62
|
||||||
|
info = 162;
|
||||||
|
otherwise
|
||||||
|
info = 1;
|
||||||
|
end
|
|
@ -230,7 +230,7 @@ if M_.maximum_endo_lead == 0
|
||||||
try
|
try
|
||||||
[dr,aimcode]=dynAIMsolver1(jacobia_,M_,dr);
|
[dr,aimcode]=dynAIMsolver1(jacobia_,M_,dr);
|
||||||
if aimcode ~=1
|
if aimcode ~=1
|
||||||
info(1) = aimcode;
|
info(1) = convertAimCodeToInfo(aimcode);
|
||||||
info(2) = 1.0e+8;
|
info(2) = 1.0e+8;
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -283,7 +283,7 @@ if (options_.aim_solver == 1) && (task == 0)
|
||||||
% reuse some of the bypassed code and tests that may be needed
|
% reuse some of the bypassed code and tests that may be needed
|
||||||
|
|
||||||
if aimcode ~=1
|
if aimcode ~=1
|
||||||
info(1) = aimcode;
|
info(1) = convertAimCodeToInfo(aimcode);
|
||||||
info(2) = 1.0e+8;
|
info(2) = 1.0e+8;
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
|
@ -56,10 +56,36 @@ if ~noprint
|
||||||
error('The steady state is complex.')
|
error('The steady state is complex.')
|
||||||
case 30
|
case 30
|
||||||
error('Variance can''t be computed')
|
error('Variance can''t be computed')
|
||||||
|
case 41
|
||||||
|
error('one (many) parameter(s) do(es) not satisfy the lower bound');
|
||||||
|
case 42
|
||||||
|
error('one (many) parameter(s) do(es) not satisfy the upper bound');
|
||||||
case 43
|
case 43
|
||||||
error('Covariance matrix of shocks is not positive definite')
|
error('Covariance matrix of shocks is not positive definite')
|
||||||
|
case 44 %DsgeLikelihood_hh / DsgeLikelihood
|
||||||
|
error('');
|
||||||
case 51
|
case 51
|
||||||
error('You are estimating a DSGE-VAR model, but the value of the dsge prior weight is too low!')
|
error('You are estimating a DSGE-VAR model, but the value of the dsge prior weight is too low!')
|
||||||
|
case 52 %DsgeVarLikelihood
|
||||||
|
error('');
|
||||||
|
|
||||||
|
% Aim Code Conversions by convertAimCodeToInfo.m
|
||||||
|
case 102
|
||||||
|
error('Aim: roots not correctly computed by real_schur.');
|
||||||
|
case 103
|
||||||
|
error('Aim: too many big roots.');
|
||||||
|
case 135
|
||||||
|
error('Aim: too many big roots, and q(:,right) is singular.');
|
||||||
|
case 104
|
||||||
|
error('Aim: too few big roots.');
|
||||||
|
case 145
|
||||||
|
error('Aim: too few big roots, and q(:,right) is singular.');
|
||||||
|
case 105
|
||||||
|
error('Aim: q(:,right) is singular.');
|
||||||
|
case 161
|
||||||
|
error('Aim: too many exact shiftrights.');
|
||||||
|
case 162
|
||||||
|
error('Aim: too many numeric shiftrights.');
|
||||||
otherwise
|
otherwise
|
||||||
error('This case shouldn''t happen. Contact the authors of Dynare')
|
error('This case shouldn''t happen. Contact the authors of Dynare')
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue