diff --git a/tests/Makefile.am b/tests/Makefile.am index c0aae9820..e8d809d6d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -10,6 +10,10 @@ OCTAVE_MODS = \ ramst_initval_file.mod \ example1_varexo_det.mod \ predetermined_variables.mod \ + k_order_perturbation/fs2000k2a.mod \ + k_order_perturbation/fs2000k2.mod \ + k_order_perturbation/fs2000k_1.mod \ + k_order_perturbation/fs2000k3.mod \ arima/mod1.mod \ arima/mod1a.mod \ arima/mod2.mod \ diff --git a/tests/k_order_perturbation/fs2000k++.mod b/tests/k_order_perturbation/fs2000k++.mod index be261e455..09889b70c 100644 --- a/tests/k_order_perturbation/fs2000k++.mod +++ b/tests/k_order_perturbation/fs2000k++.mod @@ -1,3 +1,5 @@ +/* Used to check that Dynare++ and Dynare with k_order_solver=1 give the same result */ + var m m_1 P P_1 c e W R k d n l gy_obs gp_obs y dA P2 c2; varexo e_a e_m; diff --git a/tests/k_order_perturbation/fs2000k2.mod b/tests/k_order_perturbation/fs2000k2.mod index 324e87417..9937be46b 100644 --- a/tests/k_order_perturbation/fs2000k2.mod +++ b/tests/k_order_perturbation/fs2000k2.mod @@ -1,5 +1,5 @@ -// checks for order = 2 that use_k_order = 0 (fs2000k2a) and use_k_order = 1 (this file) -// give the same results +/* Checks that, for order = 2, k_order_solver = 0 (fs2000k2a) + and k_order_solver = 1 (this file) give the same results */ var m P c e W R k d n l gy_obs gp_obs y dA ; varexo e_a e_m; @@ -57,6 +57,10 @@ steady; stoch_simul(order=2,k_order_solver,periods=1000); +if ~exist('fs2000k2a_results.mat','file'); + error('fs2000k2a must be run first'); +end; + oo1 = load('fs2000k2a_results','oo_'); dr0 = oo1.oo_.dr; diff --git a/tests/k_order_perturbation/fs2000k2a.mod b/tests/k_order_perturbation/fs2000k2a.mod index 3451779f6..d3c22a442 100644 --- a/tests/k_order_perturbation/fs2000k2a.mod +++ b/tests/k_order_perturbation/fs2000k2a.mod @@ -1,5 +1,5 @@ -// checks for order = 2 that use_k_order = 0 (this file) and use_k_order = 1 (fs2000k2) -// give the same results +/* Checks that, for order = 2, k_order_solver = 0 (this file) + and k_order_solver = 1 (fs2000k2) give the same results */ var m P c e W R k d n l gy_obs gp_obs y dA ; varexo e_a e_m; diff --git a/tests/k_order_perturbation/fs2000k3.mod b/tests/k_order_perturbation/fs2000k3.mod index 738c8ab0f..36efd98f3 100644 --- a/tests/k_order_perturbation/fs2000k3.mod +++ b/tests/k_order_perturbation/fs2000k3.mod @@ -1,4 +1,4 @@ -// checks whether second order coefficients are the same with order=2 and order=3 with use_k_order=1 +// checks whether second order coefficients are the same with order=2 and order=3 with k_order_solver=1 var m P c e W R k d n l gy_obs gp_obs y dA ; varexo e_a e_m; diff --git a/tests/k_order_perturbation/fs2000k_1.mod b/tests/k_order_perturbation/fs2000k_1.mod index a611c2eaa..c9e8bb036 100644 --- a/tests/k_order_perturbation/fs2000k_1.mod +++ b/tests/k_order_perturbation/fs2000k_1.mod @@ -1,3 +1,6 @@ +/* Checks that, for order = 2 and k_order_solver = 1, a model with 2 leads + and the same model with one lead (using auxiliary vars) give the same result */ + var m m_1 P P_1 c e W R k d n l gy_obs gp_obs y dA AUXv; varexo e_a e_m; diff --git a/tests/k_order_perturbation/fs2000kb.mod b/tests/k_order_perturbation/fs2000kb.mod deleted file mode 100644 index c1d152b02..000000000 --- a/tests/k_order_perturbation/fs2000kb.mod +++ /dev/null @@ -1,89 +0,0 @@ -// checks whether second order coefficients are the same with order=2 and order=3 with use_k_order=1 - -var m m_1 P P_1 c e W R k d n l gy_obs gp_obs y dA AUXv; -varexo e_a e_m; - -parameters alp bet gam mst rho psi del; - -alp = 0.33; -bet = 0.99; -gam = 0.003; -mst = 1.011; -rho = 0.7; -psi = 0.787; -del = 0.02; - -model (use_dll); -dA = exp(gam+e_a); -log(m) = (1-rho)*log(mst) + rho*log(m_1(-1))+e_m; --P/(c(+1)*P(+1)*m)+AUXv(+1); -W = l/n; --(psi/(1-psi))*(c*P/(1-n))+l/n = 0; -R = P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(-alp)/W; -1/(c*P)-bet*P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)/(m*l*c(+1)*P(+1)) = 0; -c+k = exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)+(1-del)*exp(-(gam+e_a))*k(-1); -P*c = m; -m-1+d = l; -e = exp(e_a); -y = k(-1)^alp*n^(1-alp)*exp(-alp*(gam+e_a)); -gy_obs = dA*y/y(-1); -gp_obs = (P/P_1(-1))*m_1(-1)/dA; -m_1 = m; -P_1 = P; -AUXv = bet*P*(alp*exp(-alp*(gam+log(e)))*k(-1)^(alp-1)*n^(1-alp)+(1-del)*exp(-(gam+log(e))))/(c(+1)*P(+1)*m); -end; - -initval; -m = mst; -m_1=mst; -P = 2.25; -P_1 = 2.25; -c = 0.45; -e = 1; -W = 4; -R = 1.02; -k = 6; -d = 0.85; -n = 0.19; -l = 0.86; -y = 0.6; -gy_obs = exp(gam); -gp_obs = exp(-gam); -dA = exp(gam); -AUXv = 1; -end; - -shocks; -var e_a; stderr 0.014; -var e_m; stderr 0.005; -end; - -steady; - -stoch_simul(order=2,use_k_order,periods=1000); - -if ~exist('fs2000k2a_results.mat','file'); - error('fs2000k2a must be run first'); -end; - -oo1 = load('fs2000k2a_results','oo_'); - -dr0 = oo1.oo_.dr; -dr = oo_.dr; - -ikr = [2:10 1 13:17]; -ikc2 = [1 3 4 2 9 11 12 10 13 15 16 14 5 7 8 6]; - -if max(max(abs(dr0.ghxx - dr.ghxx(ikr,ikc2)))) > 1e-12; - disp('error in ghxx'); -end; -if max(max(abs(dr0.ghuu - dr.ghuu(ikr,:)))) > 1e-12; - disp('error in ghuu'); -end; -if max(max(abs(dr0.ghxu - dr.ghxu(ikr,[1 2 5:8 3 4])))) > 1e-12; - disp('error in ghxu'); -end; -if max(max(abs(dr0.ghs2 - dr.ghs2(ikr)))) > 1e-12; - disp('error in ghs2'); -end; -