0001 function [result,info] = check(M, options, oo)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059 if ~options.initval_file && M.exo_nbr > 1
0060 oo.exo_simul = ones(M.maximum_lead+M.maximum_lag+1,1)*oo.exo_steady_state';
0061 end
0062
0063 options.order = 1;
0064
0065 if isempty(options.qz_criterium)
0066 options.qz_criterium = 1+1e-6;
0067 end
0068
0069 oo.dr=set_state_space(oo.dr,M);
0070
0071 [dr,info,M,options,oo] = resol(1,M,options,oo);
0072
0073 oo.dr = dr;
0074
0075 if info(1) ~= 0 && info(1) ~= 3 && info(1) ~= 4
0076 print_info(info, options.noprint);
0077 end
0078
0079 eigenvalues_ = dr.eigval;
0080 if (options.block)
0081 nyf = dr.nyf;
0082 else
0083 nyf = nnz(dr.kstate(:,2)>M.maximum_endo_lag+1);
0084 end;
0085 [m_lambda,i]=sort(abs(eigenvalues_));
0086 n_explod = nnz(abs(eigenvalues_) > options.qz_criterium);
0087
0088 result = 0;
0089 if (nyf== n_explod) && (dr.rank == nyf)
0090 result = 1;
0091 end
0092
0093 if options.noprint == 0
0094 disp(' ')
0095 disp('EIGENVALUES:')
0096 disp(sprintf('%16s %16s %16s\n','Modulus','Real','Imaginary'))
0097 z=[m_lambda real(eigenvalues_(i)) imag(eigenvalues_(i))]';
0098 disp(sprintf('%16.4g %16.4g %16.4g\n',z))
0099 disp(sprintf('\nThere are %d eigenvalue(s) larger than 1 in modulus ', n_explod));
0100 disp(sprintf('for %d forward-looking variable(s)',nyf));
0101 disp(' ')
0102 if dr.rank == nyf && nyf == n_explod
0103 disp('The rank condition is verified.')
0104 else
0105 disp('The rank conditions ISN''T verified!')
0106 end
0107 disp(' ')
0108 end